Rails:fields_for只有一个对象

Ale*_*lex 4 ruby-on-rails

我在我的Rails应用程序中有一个模型产品,它的属性可以编辑,我想让用户评论他所做的每一个更改(评论可以是空白的).所以,Product has_many:comments,它accept_nested_attributes_for:注释,如果注释为空,则拒绝它.

因此,Product的编辑表单是一种多模型形式.我遇到的问题是:

  1. Fields_for帮助程序呈现属于产品的所有注释的文本区域,因此用户可以编辑之前的所有注释.我需要它只为新的字段渲染字段.
  2. 如果验证中断,并且没有注释,则fields_for不会呈现任何内容.我应该每次在fields_for语句之前的视图中执行@ product.comments.build,还是有更优雅的方式来做?

也许我错了,fields_for不适合这种情况?

Cel*_*tas 9

基于Tots答案我只是简单一点(Rails 3兼容):

<%= f.fields_for :comments, @product.comments.build do |comment| %>
    <%= comment.label :comments %><br />
    <%= comment.text_area :content %>
<% end %>
Run Code Online (Sandbox Code Playgroud)