2010-08-02 65 views
2

我有我的Rails应用程序中的模型产品,其属性可以编辑,我想让用户评论他所做的每一个变化(尽管评论可以是空白的)。因此,产品has_many:评论,它accept_nested_attributes_for:评论,并拒绝它,如果评论是空白的。Rails:fields_for只有一个对象

因此,产品的编辑表单是一种多模式表单。我遇到的问题有:

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

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

回答

0
<% f.fields_for(:comments, Product.reflect_on_association(:comments).klass.new) 
    do |builder| %> 

    <%= builder.label :comment %> 
    <%= builder.text_area :comment, :rows => 3 %> 
<% end %> 
6

基础上TOTS回答我只是做了一点simplier(Rails 3的兼容):

<%= f.fields_for :comments, @product.comments.build do |comment| %> 
    <%= comment.label :comments %><br /> 
    <%= comment.text_area :content %> 
<% end %> 
+0

这个答案应标记为正确的! – ClassyPimp 2015-04-06 13:45:39