ruby-on-rails – 使用accepts_nested_attributes_for,has_many
发布时间:2020-12-17 03:46:14 所属栏目:百科 来源:网络整理
导读:我有一个包含很多评论的页面.许多用户可以访问此页面并提交评论.我查看另一个私有页面的评论. 车型/ page.rb class Page ActiveRecord::Base has_many :comments,:dependent = :destroy accepts_nested_attributes_for :comments,:allow_destroy = trueend
我有一个包含很多评论的页面.许多用户可以访问此页面并提交评论.我查看另一个私有页面的评论.
车型/ page.rb class Page < ActiveRecord::Base has_many :comments,:dependent => :destroy accepts_nested_attributes_for :comments,:allow_destroy => true end 车型/ comment.rb class Comment < ActiveRecord::Base belongs_to :page belongs_to :user end views / pages / show.html.erb相关部分 <%= form_for @page,:remote => true do |f| %> <% f.fields_for :comments do |builder| %> <%= builder.text_area :content,:rows => 1 %> <%= builder.submit "Submit" %> <% end %> <% end %> 控制器/ pages_controller.rb def show @page = Page.find(params[:id]) end def update @page = Page.find(params[:id]) @page.comments.build @page.update_attributes(params[:page]) end 这里的问题是我不希望用户看到多个字段以供注释.然而,如果我做<%f.fields_for:comment do | builder | %GT;然后它抛出一个错误,因为它不知道一条评论是什么,只想处理多个. 从本质上讲,用户应该能够在页面上提交单个注释,该注释具有许多注释,并且具有与页面自动关联的注释.作为次要的事情,我需要拥有与评论相关联的用户ID(可通过Devise访问current_user.id). 解决方法<% f.fields_for :comments,f.object.comments.build do |fc| %> <!-- rest of form --> <% end %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |