如何在项目列表中动态实现附录新项目



我有一个形式的@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留给您。

最新更新