0

我正在开发一个 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 中,我想接收数组中的每一项,但相反,我得到的是完整的数组。

如何获取子表单中数组的每个项目?

有一个更好的方法吗?

谢谢

4

2 回答 2

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 %>
于 2013-09-19T15:34:53.937 回答
0

我希望这能纠正这个问题:

<%= form_tag 'myOp' do |f|%>
 <%= fields_for :test, @data.each do |builder|%>
  <%= render 'sub_form', :f => builder %>
 <% end %>
<% end %>

通常可以使用.each方法分隔数组对象。愿这也能在这里奏效。试试看。

于 2013-09-19T11:51:54.043 回答