我正在创建一个网站,它也有文章和评论,文章与用户无关,因为只有我作为管理员才能创建文章......但是有评论与用户和文章相关但是当我尝试显示创建注释的用户的用户名,在文章的评论部分中,它给出了我的错误“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
答案 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}}