Rails 3以单一格式编辑多条记录
问题描述:
我一直在这个问题上停留了几天。Rails 3以单一格式编辑多条记录
我已经在Railscasts第198集中取得了一些成功,但那个是Rails 2.在Rails 3中有一些变化使得它在第#198集中提供的代码将无法工作。
问题就出在edit_individual.html.erb内:
原始代码(由Ryan @ Railscasts提供):
<% form_tag update_individual_products_path, :method => :put do %>
<% for product in @products %>
<% fields_for "products[]", product do |f| %>
<h2><%=h product.name %></h2>
<%= render "fields", :f => f %>
<% end %>
<% end %>
<p><%= submit_tag "Submit" %></p>
<% end %>
修改代码(只是改变fields_for到的form_for):
<% form_tag update_individual_products_path, :method => :put do %>
<% for product in @products %>
<% form_for "products[]", product do |f| %>
<h2><%=h product.name %></h2>
<%= render "fields", :f => f %>
<% end %>
<% end %>
<p><%= submit_tag "Submit" %></p>
<% end %>
在新代码中,每条记录放置在它们自己的一个表单中,都放在一个表单中(这是我唯一想要的表单)。
我的问题是,我怎样才能得到由Railscasts Episode#198提供的代码在Rails 3中工作?
这里是对Railscast一个链接,我提到: http://railscasts.com/episodes/198-edit-multiple-individually
谢谢你, c.allen.rosario
答
我找到了解决办法。只需要修改下面一行由瑞安@ Railscasts提供的代码:
<% fields_for "products[]", product do |f| %>
并将其更改为:
<%= fields_for "products[]", product do |f| %>
注意,该<%
已被修改为<%=
。
最终的解决方案:
<% form_tag update_individual_products_path :method => :put do %>
<% for product in @products %>
<%= fields_for "products[]", product do |f| %>
<h2><%= h product.name %></h2>
<% end %>
<% end %>
<p><%= submit_tag "Submit" %></p>
<% end %>
我想知道如果有人能解释这个解决方案给我。从我的理解你应该只需要在fields_for
前<%
。
c.allen.rosario
答
在导轨3从<%fields_for至<%= fields_for的变化是因为它被认为混淆的form_for,的form_tag等...使用<%形式...% >即使他们在输出html代码。 随着Rails 3,因为他们输出HTML代码,他们使用<%=。
请注意,您的第一行弃用:
<% form_tag update_individual_products_path, :method => :put do %>
应该
<%= form_tag update_individual_products_path, :method => :put do %>
同样为所有表单标签。
您不能在另一个`form_for`中使用`form_for`,因为这意味着另一个`
不显示错误。我只是通过提交按钮来获得空白页面。 – 2010-12-08 23:58:24