我有个问题,我做了一个评论模型:

class Comment < ActiveRecord::Base
  attr_accessible :comment
  belongs_to :post
  belongs_to :user

在用户模型中
class User < ActiveRecord::Base
  attr_accessible :email, :password, :password_confirmation
  has_many :posts
  has_many :comments

但这不起作用:
  <% post.comments.each do |comment|   %>
    <div id="comments" >
      <%= comment.user.email %>
           <%= comment.comment %>
    </div>
   <%end%>

出现错误:
undefined method `email' for nil:NilClass

请问有什么问题,在创建评论时,我做了一个评论,所以,请看:
  @comment = @post.comments.create(params[:comment],:user_id => current_user.id)

请告诉我如何解决这个错误-
更新下一个响应时,错误将持续:
我试试这个:
@comment = Comment.new(params[:comment])
@comment.user = current_user
@comment.post = @post
@comment.save


@comment = @post.comments.create(params[:comment].merge(:user_id => current_user.id))

而这个:
@comment = @post.comments.build(params[:comment])
@comment.user = current_user
@comment.save

不起作用
相同错误:
undefined method `email' for nil:NilClass
Extracted source (around line #48):

45:
46:       <% post.comments.each do |comment|   %>
47:         <div id="comments" >
48:           <%= comment.user.email %>
49:                <%= comment.comment %>
50:         </div>
51:        <%end%>

我不知道我的模型评论有什么问题:用户id
  attr_accessible :comment,:user_id,:post_id

我的造型是这样的
   <div id="comment_form_<%= post.id %>" style="display: none;" >

      <%= form_for [post,post.comments.build], :remote => true,:class=>"comment" do |com| %>
          <%= com.text_area :comment %>
          <%= com.submit "aaa" %>

      <%end %>

请帮助我我不知道错误在哪里,数据库迁移正确

最佳答案

# Model
class Comment < ActiveRecord::Base
  attr_accessible :comment, :user_id
end

#Controller
@comment = @post.comments.create(params[:comment].merge(:user_id => current_user.id))

但下一个会更好(:用户id不可用于批量分配):
@comment = @post.comments.build(params[:comment])
@comment.user = current_user
@comment.save

关于ruby-on-rails - Exibe中nil:NilClass的未定义方法`email',表父亲的邮件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14175913/

10-11 09:21