我正在开发一个rails应用程序。
我希望用户能够在模型数组之间进行选择
在一个控制器中,我创建了一个模型数组。
def myController
@data = []
@data += [MyData.find(2)]
@data += [MyData.find(5)]
@data += [MyData.find(7)]
end
在视图中,我无法使用form_for,因为无法在数组中使用,所以我有:
<%= form_tag 'myOp' do |f|%>
<%= fields_for :test, @data do |builder|%>
<%= render 'sub_form', :f => builder %>
<% end %>
<% end %>
现在在sub_form中,我想收到数组的每个项目,但相反,我得到了完整的数组。
如何获取子表单中数组的每个项目?
有更好的方法吗?
由于
答案 0 :(得分:2)
def my_action
@datas = MyData.find(2, 5, 7)
end
您需要遍历@datas
数组并为每个对象生成字段。这是因为fields_for
只为一个对象生成字段,而不是对象数组。
<%= form_tag 'myOp' do |f|%>
<% @datas.each_with_index do |data, i| %>
<%= fields_for "test_#{i}", data do |builder|%>
<%= render 'sub_form', :f => builder %>
<% end %>
<% end %>
<% end %>
答案 1 :(得分:0)
我希望这会纠正这个问题:
<%= form_tag 'myOp' do |f|%>
<%= fields_for :test, @data.each do |builder|%>
<%= render 'sub_form', :f => builder %>
<% end %>
<% end %>
通常,可以使用 .each 方法分隔数组对象。也许这也适用于此。试试吧。