仅使用 fields_for 和 nested_attributes 的范围
use just the scope for fields_for with nested_attributes
我有 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 表单助手可以实现此目的?
据我所知,没有任何内置帮助程序可以让您执行此操作,但可以仅使用 fields_for
组合出一个解决方案。诀窍是为每个组设置一个单独的 fields_for
块:
<% f.object.bs.group_by(&:group).each do |k, v| %>
<%= f.fields_for "b_groups[]" do |g| %>
<!-- ... -->
<% end %>
<% end %>
我有 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 表单助手可以实现此目的?
据我所知,没有任何内置帮助程序可以让您执行此操作,但可以仅使用 fields_for
组合出一个解决方案。诀窍是为每个组设置一个单独的 fields_for
块:
<% f.object.bs.group_by(&:group).each do |k, v| %>
<%= f.fields_for "b_groups[]" do |g| %>
<!-- ... -->
<% end %>
<% end %>