【问题标题】:Rails 5.1 locals and partialsRails 5.1 局部变量和局部变量
【发布时间】:2018-04-04 12:18:58
【问题描述】:

在我的 Rails 应用程序中,我想创建一个可在应用程序的多个位置使用但具有不同参数和数据的工具箱。 为此,我创建了一个在需要时调用的部分,我的问题是,如果我在同一页面上多次调用部分,变量将被覆盖,而不是在每个部分中有不同的数据,最后一次调用会覆盖所有其他局部变量

示例: 在同一页上 : 第一次通话:

= render partial: "layouts/dynamic_tool_box/dynamic_tool_box", locals: {pagined_datas: members, class_name: "company_team"}
# Here, class_name = "company_connexion_history"

第二次调用:

= render partial: "layouts/dynamic_tool_box/dynamic_tool_box", locals: {pagined_datas: @connexion_histories, class_name: "company_connexion_history"}

在同一页面上发现自己处于不同偏向的调用是两个调用

我的工具箱模板:

.dynamic_tool_box
  .tool_box
    .flexboxed-between
      %h2{class: "tool_box_title"}
        = "Plus d'Outils"
      %h2{class: "develop_dynamic_tool_box"}
        = "+"
    .dynamic_tool_box_content
      = render partial: "layouts/dynamic_tool_box/dynamic_tool_box_more", locals: {class_name: class_name}
    .dynamic_tool_search
      = render partial: "layouts/dynamic_tool_box/dynamic_tool_box_search", locals: {class_name: class_name}
    .end_of_tool_box

  = yield :dynamic_table
  .row
    .col-12
      .pagination.flexboxed-centered
        = will_paginate pagined_datas
        %p{style: "position: absolute; margin-top: -24px;"} 
          = "Affichage de #{CustomMethods::MetalsIndustry.return_per_page_or_default(@current_user, class_name)} / #{pagined_datas.count} éléments"
  .row
  .tool_box
    .dynamic_tool_search
      = render partial: "layouts/dynamic_tool_box/dynamic_tool_box_search", locals: {class_name: class_name}
    .flexboxed-between{style: "margin-top: 30px;"}
      %h2{class: "tool_box_title"}
        = "Plus d'Outils"
      %h2{class: "develop_dynamic_tool_box"}
        = "+"
    .dynamic_tool_box_content
      = render partial: "layouts/dynamic_tool_box/dynamic_tool_box_more", locals: {class_name: class_name}

tool_box 调用示例:

= content_for :dynamic_table do 
  #person-connexion-history
    %table.pretty.table{style: "border: 1px solid #E89F3A; color: gray;"}
      %thead
        %tr{style: "border: 1px solid #E89F3A;"}
          %th{style: "text-align: center;"}
            = sortable_employe "family_name", t("company.form.members.lastname")   
          %th{style: "text-align: center;"}
            = sortable_employe "given_name", t("company.form.members.firstname") 
          %th{style: "text-align: center;"}
            = sortable_employe "email_perso", t("company.form.members.email") 
          %th{style: "text-align: center;"}
            = sortable_employe "phone_number", t("company.form.members.phone") 
          %th{style: "text-align: center;"}
            = t("company.form.members.access") 
      - if members
        - members.each do |member|
          %tr
            %td{style: "text-align: center;"}
              = member.family_name
            %td{style: "text-align: center;"}
              = member.given_name 
            %td{style: "text-align: center;"}
              = member.email_perso
            %td{style: "text-align: center;"}
              = member.phone_number
            %td{style: "text-align: center;"}
              = link_to('Voir', {})

-# Ici on apelle le partial qui attend un content_for :dynamic_table et on lui donne les données a paginer
= render partial: "layouts/dynamic_tool_box/dynamic_tool_box", locals: {pagined_datas: members, class_name: "company_team"}

【问题讨论】:

    标签: ruby-on-rails haml partial-views


    【解决方案1】:

    问题来自我的内容_因为我必须添加 flush: true 选项来覆盖缓存

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      相关资源
      最近更新 更多