有条件的rails字段

时间:2015-06-18 23:02:34

标签: ruby-on-rails ruby field fields-for

我正在为案例显示一些联系人。问题是我想把它们分成几组。

客户  ...列出客户 前律师  ...列出前律师 反对党  ......列出反对党

    <% current_account.roles.each do |role| %>
      <%= f.fields_for :case_contacts, f.object.case_contacts.order(:role) do |builder| %>
        <% if builder.object.role == role %>
          <%= render partial: 'contact_fields', locals: { f: builder, edit: edit } %>
        <% end %>
      <% end %>
    <% end %>

所以这样做除了它在我的html中留下空的div.fields。

有没有办法将条件放在fields_for语句

    <%= f.fields_for :case_contacts, f.object.case_contacts.order(:role), if f.object.role = role do |builder| %>

我知道这个例子是错误的。

而且,实际上,我可以不使用fields_for一起生成的div.fields

编辑: 如果fields_for只显示builder.object.role = role

的字段,我想我甚至不需要订购它

2 个答案:

答案 0 :(得分:4)

找到答案

 <%= f.fields_for :case_contacts, f.object.case_contacts.where(role: role) do |builder| %>

答案 1 :(得分:0)

您必须使用保护条件包装fields_for块:

<% if f.object.role == role %>
  <%= f.fields_for :case_contacts, f.object.case_contacts.order(:role) do |builder| %>
    <% if builder.object.role == role %>
      <%= render partial: 'contact_fields', locals: { f: builder, edit: edit } %>
    <% end %>
  <% end %>
<% end %>