加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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 %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读