0

我有一个表格用于@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我想那是因为我在尝试添加新项目时没有在后端更新。我希望你能给我一些关于这方面的想法。

4

1 回答 1

3

您将要为此设置一个嵌套表单。stackoverflow 上还有很多其他关于嵌套表单的问题,但要点如下:

  • 在你的控制器中创建一个新的空对象来填充一个@item_list.items.build假设 ItemList has_many Items 的项目
  • 添加accepts_nested_attributes_for :item您的项目模型
  • 也添加attr_accessible :items_attributes您的 Item 模型
  • 您将需要将表单构建器传递给部分,所以是这样的:

    _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 留给你。

于 2012-10-26T01:57:56.213 回答