chr*_*len 7 forms editing railscasts ruby-on-rails-3
我已经坚持了几天这个问题了.
我已经在Railscasts Episode#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 %>
Run Code Online (Sandbox Code Playgroud)
修改后的代码(只需将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 %>
Run Code Online (Sandbox Code Playgroud)
在新代码中,每个记录都放在一个自己的表单中,所有表单都在一个单独的表单中(这是我唯一想要的表单).
我的问题是,如何让Railscasts Episode#198提供的代码在Rails 3中运行?
这是我提到的Railscast的链接:http://railscasts.com/episodes/198-edit-multiple-individually
谢谢,c.allen.rosario
chr*_*len 18
我找到了解决方案.只需修改Ryan @ Railscasts提供的代码中的以下行:
<% fields_for "products[]", product do |f| %>
Run Code Online (Sandbox Code Playgroud)
并将其更改为:
<%= fields_for "products[]", product do |f| %>
Run Code Online (Sandbox Code Playgroud)
请注意,<%已被修改为<%=.
最终解决方案
<% 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 %>
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人能向我解释这个解决方案.从我的理解,你应该只需要<%在前面fields_for.
c.allen.rosario