【问题标题】:How to filter records to be edited by nested_form_fields gem in Rails 5.2?如何过滤 Rails 5.2 中nested_form_fields gem 编辑的记录?
【发布时间】:2018-12-04 08:57:50
【问题描述】:

我使用nested_form_fields gem 来翻译技术文档中的一些特定字段。翻译是与文档关联的嵌套字段,因此每个文档对于每种语言的每个字段都有一个翻译实例。

在编辑文档的_form视图中,为每个翻译字段调用nested_form_fields,显示相应输入的位置由包含的DIV的id设置:

<div class="row">
        <div class="col-md-1">
          <%= image_tag("next32.png", :id => "unfold") %>
        </div>
        <div class="col-md-1 text-right"> <%= t('Name')%>:
        </div>
        <div class="col-md-10 field"><%= f.text_field :name, :class => "col-md-8" %>
        </div>
      </div>
      <!-- Translations management -->
      <div class="translation">
        <div class="row">
          <div class="col-md-10 col-md-offset-2" id="name_translation">
            <%= f.nested_fields_for :translations  do |locution| %>
            <div class="row">
              <div class="col-md-1">
                <%= locution.collection_select :language, @other_languages, :property, :name  %>
              </div>
              <div class="col-md-8">
                <%= locution.text_field :description, :class => "col-md-10" %>
              </div>
              <div class="col-md-1">
                <%= locution.remove_nested_fields_link {image_tag("remove.png")} %>
              </div>
              <div class="col-md-1">
                <%= locution.hidden_field :field_name, :value => 'name' %>
              </div>
            </div>
            <% end %>
          </div>
        </div>
        <div class="row">
          <div class="col-md-10 col-md-offset-2">
            <%= f.add_nested_fields_link :translations, image_tag("add.png"), data: {insert_into: "name_translation"} %> <%= t('New') %>
          </div>
        </div>
        <br/>
      </div>
      <!-- End of translations -->

将此代码用于页面中的 2 或 3 个字段,页面可用的所有已翻译字段都显示在 nested_fields_for 方法的每个实例中。

如果有办法在 f.nested_fields_for :translations 中添加过滤器(以块的形式?),或者我必须获取所有翻译记录并在 do |locution| 循环中过滤掉。

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails nested-form-for


    【解决方案1】:

    解决方案来自nested_form_fields gem 的作者 Nico Ritche:

    过滤就像普通的fields_for一样工作,你可以提供 直接过滤后的翻译:

    f.nested_fields_for :translations, your_filtered_translations 做 |演讲|

    这导致我的代码发生以下更新:

    <%= f.nested_fields_for :translations, @my_object.translations.where("field_name='name'") do |locution| %>
    

    非常感谢尼科!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      相关资源
      最近更新 更多