Rails - nil的未定义方法`username':NilClass

时间:2015-08-30 21:11:29

标签: ruby-on-rails activerecord

我正在创建一个网站,它也有文章和评论,文章与用户无关,因为只有我作为管理员才能创建文章......但是有评论与用户和文章相关但是当我尝试显示创建注释的用户的用户名,在文章的评论部分中,它给出了我的错误“nil的未定义方法`用户名':NilClass”

模型

用户模型

has_many :comments

文章模型

has_many :comments

评论模型

  belongs_to :article
  belongs_to :user

文章控制器显示评论

def show
    @article = Article.find(params[:id])
    @comments = @article.comments
end

和视图

<h2>Comments <%= @comments.count %></h2>
    <% @comments.each do |comment| %>
        <%= comment.content %>
        <%= comment.user.username %>
    <% end %>

评论控制器创建评论

def create
    @article = Article.find(params[:article_id])
    @comment = Comment.new(comment_params)
    @comment.article = @article
    @comment.user = current_user
    @comment.save

    redirect_to article_path(@article)
end

1 个答案:

答案 0 :(得分:2)

您需要以下设置:

.username

这允许您在User模型上调用u = User.new(:username => "Foo") u.save a = Article.new(:user_id => 1) a.save comment = Comment.new(:article_id => 1, :user_id => 1) comment.save comment.user.username # => "Foo" 方法,并允许以下关系返回正确的用户名:

rails g migration AddUsernameToUsers username:string:uniq
rake db:migrate

请注意,如果您使用的是Devise,则需要执行以下操作:

{{1}}