只使用fields_for的范围和nested_attributes

时间:2017-07-07 23:18:11

标签: ruby-on-rails form-for

我有2个班,A和B

class A
  has_many :bs
  accepts_nested_attributes_for :bs
end

class B
   belongs_to :a
end

B有一个名为:group的字段,我想在表单中按组对b进行分组。

fields_for做2件事,1)围绕嵌套表单元素添加范围,2)迭代属性。我只想要第一部分,嵌套范围。有没有办法只对嵌套进行范围调整,以便我可以手动对嵌套对象进行分组?

在伪代码中我想要的是

<%= form_for a do |f| %>
  <%= scope_for :gs do |g| %>
      <% f.object.bs.group_by{|x| x.group} do |k,v| %>
    <h3> Group <%= k %> </h3>
    <% v.each do |b| %>
       <%= g.text_field :field1

...

是否有Rails表单助手可以实现此目的?

1 个答案:

答案 0 :(得分:1)

我知道没有内置帮助器可以让你这样做,但是可以使用fields_for来破解解决方案。诀窍是为每个组分别设置fields_for块:

 <% f.object.bs.group_by(&:group).each do |k, v| %>
   <%= f.fields_for "b_groups[]" do |g| %>
     <!-- ... -->
   <% end %>
 <% end %>