我遇到嵌套表单的问题:rails 3.1在它应该(例如编辑现有记录时)时不会渲染fields_for块。由于我对自己的英语不够自信,我做了一个小例子应用程序:
新动作:
def new
@manga = Manga.new
3.times {@manga.volumes.build}
end
表格代码:
<%= form_for @manga do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<% f.fields_for :volumes do |builder| %>
<p>
<%= builder.label :cover_link, "Link to cover" %><br />
<%= builder.text_field :cover_link %>
</p>
<% end %>
<p><%= f.submit %></p>
<% end %>
在Rails 3.0中,生成的表单显示为just like it should。 (好的,所以我不能发布图片。所以我必须把它们作为链接。)但是在rails 3.1中,结果是different。
我可能还应该注意,我在保存方面没有任何问题,也没有其他类似的问题。当使用来自railscast 197的JS添加字段时,一切都得到了完美保存。这里的主要问题是保存的所有内容都无法编辑。
答案 0 :(得分:4)
在潜伏之后,我发现,我的问题与其他问题没有什么不同。
不推荐的致电
fields_for
的方式是错误。
通过JS保存数据(以及正在添加字段)这一事实误解了我。解决方案非常简单:
not `<% fields_for %>`, but `<%= fields_for %>`