我有一个形式的@item_list
:
<%= form_for @item_list do |f|%>
some meta-info to describe item_list
<%end%>
,我还有一个渲染部分称为 _item.html.erb
:
<%= form_for @item_list.item do |f|%>
some meta-info to describe item_list.item
<%end%>
在我的索引视图中,我有一个称为 add item
的按钮,该按钮将调用jQuery ajax函数以将此部分附加到DIV块中,而另一个称为done
的按钮,我希望它将所有信息存储在所有表单中一次。
当我尝试保存这些内容时,该参数不包括项目信息。我想那是因为当我尝试添加新项目时,我没有在后端更新item_list
。希望您能为此提供一些想法。
您将要为此设置嵌套表单。关于嵌套形式的Stackoverflow还有许多其他问题,但这是要点:
- 在您的控制器中创建一个新的空对象,以填充项目
@item_list.items.build
假设项目列表has_many项目 - 在您的项目模型中添加
accepts_nested_attributes_for :item
- 在您的项目模型中添加
attr_accessible :items_attributes
-
您将需要将您的表格构建器传递给部分,所以类似的东西:
_form.html.erb <%= form_for @item_list do |f| %> <% @item_list.items.each do |item| %> <%= render 'item', :f => f %> <% end %> <% end %> _item.html.erb <%= f.fields_for :items, item do |item_form| %> <%= item_form.text_field ... %> <% end %>
如果您需要更多的具体细节,请为我们提供更多代码,包括与关系的模型。此时,我将JavaScript留给您。