我需要一些帮助。我一直在Rails中创建一个博客网站来处理一些宝石和其他技术,我遇到了一个问题。我正在将评论部分调用到我的博客节目页面中,如下所示:
show.html.slim:
- if notice != nil
p#notice.alert.alert-success role='alert' = notice
h1 Blog Post
h4 Title: #{@blog_post.title}
h4 Author: #{@blog_post.user.name}
h4 Entry:
p = @blog_post.blog_entry
= render partial: 'comments/form', locals: { comment: @comment }
.panel.panel-default
.panel-heading
h4 Comments
#js-comments.panel-body
= render partial: 'comments/comment', collection: @blog_post.comments
= link_to 'Feed', blog_posts_path, class: 'btn btn-primary'
问题出在评论/评论部分:
.panel-body
p
strong
= comment.user.username
| said at
span.posted-at
= comment.created_at.strftime('%m/%d/%Y %H:%M:%S')
| :
p = comment.comment_entry
- if policy(comment).update?
= link_to 'Edit Comment', edit_blog_post_comment_path(comment.blog_post, comment), class: 'btn btn-primary'
- if policy(comment).destroy?
= link_to 'Destroy Comment', [comment.blog_post, comment], method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-primary'
现在,当我调用comment.user.username或comment.created_at.strftime时,我收到NoMethodError消息,指出username和strftime是未定义的方法。但是,如果我调用comment.user和comment.created_at,它就可以了。出于某种原因,它不会让我在链中添加额外的方法。我可以验证用户,blog_post和评论之间是否存在所有正确的关联。
以防万一,这是我的博客控制器显示页面:
def show
@comment = @blog_post.comments.new
end
非常感谢任何帮助。谢谢!
编辑:
错误消息是:
undefined method `username' for nil:NilClass
和better_errors告诉我问题在于
部分的评论comment.user.username
并在显示页面上调用部分
= render partial: 'comments/comment', collection: @blog_post.comments
谢谢!
答案 0 :(得分:0)
控制器中初始化的注释已添加到@ blog_post.comments,但它没有用户或created_at。只需将您的控制器更改为@comment = Comment.new