rails 3.1中的嵌套表单

时间:2011-09-20 17:45:59

标签: ruby-on-rails ruby-on-rails-3.1 nested-forms

我遇到嵌套表单的问题: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添加字段时,一切都得到了完美保存。这里的主要问题是保存的所有内容都无法编辑。

1 个答案:

答案 0 :(得分:4)

在潜伏之后,我发现,我的问题与其他问题没有什么不同。

  

不推荐的致电fields_for的方式是错误。

通过JS保存数据(以及正在添加字段)这一事实误解了我。解决方案非常简单:

not `<% fields_for %>`, but `<%= fields_for %>`