Ruby on rails 如何实现在项目列表中动态追加新项目?
对于Ruby on rails 如何实现在项目列表中动态追加新项目?,ruby-on-rails,ruby,Ruby On Rails,Ruby,对于@item\u列表,我有一个表单: <%= form_for @item_list do |f|%> some meta-info to describe item_list <%end%> 在我的索引视图中,我有一个名为additem的按钮,它将调用jquery ajax函数将这个部分附加到div块,还有一个名为done的按钮,我希望它一次存储所有表单中的所有信息 当我试图保存这些时,参数不包括项目信息。我想这是因为我在尝试添加新项目时没有更新后端的项目列表
@item\u列表
,我有一个表单:
<%= form_for @item_list do |f|%>
some meta-info to describe item_list
<%end%>
在我的索引视图中,我有一个名为additem
的按钮,它将调用jquery ajax函数将这个部分附加到div块,还有一个名为done
的按钮,我希望它一次存储所有表单中的所有信息
当我试图保存这些时,参数不包括项目信息。我想这是因为我在尝试添加新项目时没有更新后端的
项目列表。我希望您能就此提供一些想法。您需要为此设置一个嵌套表单。关于嵌套表单的stackoverflow还有许多其他问题,但要点如下:
- 在控制器中创建一个新的空对象,以填充项
@item\u list.items.build
假设一个ItemList有许多项
- 添加
在项目模型中为:项目接受\u嵌套的\u属性\u
- 在项目模型中添加
attr\u accessible:items\u属性
- 您需要将表单生成器传递给partial,因此如下所示:
_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 %>
\u form.html.erb
f%>
_item.html.erb
如果您需要更多的细节,请向我们提供更多的代码,包括您的关系模型。此时,我将把javascript留给您。您需要为此设置一个嵌套表单。关于嵌套表单的stackoverflow还有许多其他问题,但要点如下:
- 在控制器中创建一个新的空对象,以填充项
@item\u list.items.build
假设一个ItemList有许多项
- 添加
在项目模型中为:项目接受\u嵌套的\u属性\u
- 在项目模型中添加
attr\u accessible:items\u属性
- 您需要将表单生成器传递给partial,因此如下所示:
_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 %>
\u form.html.erb
f%>
_item.html.erb
如果您需要更多的细节,请向我们提供更多的代码,包括您的关系模型。现在我将把javascript留给您。Hi agmin,我真正想做的是将它们分离成不同的形式。有什么方法可以做到这一点吗?如果你有单独的表格,你只能单独提交。当一个表单被提交时,您可以做一些javascript黑客操作来读取并发布来自所有其他表单的参数,但我认为这没有意义。对于嵌套表单,您似乎仍然有一个非常可靠的用例,但也许您想将其ajaxify化以添加项?是的,您是对的。如果我一次提交所有表单,可能会让代码变得难看,难以维护。我确实使用ajax来添加项目。我已经实现了这一部分。我想使用多表单的原因是因为UI,我想把项目列表信息和项目放在一个页面中的两个不同的位置。所以我会一直想一个有效的方法来解决这个问题。谢谢你,agmin,我已经重写了UI,这样嵌套表单就可以很好地解决这个问题。谢谢你的回答和建议。这很有帮助。嗨,阿明,我真正想做的是把它们分成不同的形式。有什么方法可以做到这一点吗?如果你有单独的表格,你只能单独提交。当一个表单被提交时,您可以做一些javascript黑客操作来读取并发布来自所有其他表单的参数,但我认为这没有意义。对于嵌套表单,您似乎仍然有一个非常可靠的用例,但也许您想将其ajaxify化以添加项?是的,您是对的。如果我一次提交所有表单,可能会让代码变得难看,难以维护。我确实使用ajax来添加项目。我已经实现了这一部分。我想使用多表单的原因是因为UI,我想把项目列表信息和项目放在一个页面中的两个不同的位置。所以我会一直想一个有效的方法来解决这个问题。谢谢你,agmin,我已经重写了UI,这样嵌套表单就可以很好地解决这个问题。谢谢你的回答和建议。这帮了大忙。