Rails App - Object_ID返回用户名



我正在开发一个简单的博客应用程序,我有麻烦显示与评论相关的用户名。

Comments belongs_to:posts and:users。Posts belongs_to:user和has_many:comments。用户有_many:帖子和:评论。

我的评论模型中的创建操作工作,并按照预期使用post_id和user_id存储评论:

class CommentsController < ApplicationController
def create
  @post = Post.find(params[:post_id])
  @comment = @post.comments.create(comment_params)
  @comment.user = current_user
  if @comment.save
    redirect_to @post
  else
    flash.now[:danger] = "error"
  end
end
private
  def comment_params
    params.require(:comment).permit(:content)
  end
end

我可以通过控制台访问用户名,使用Comment.first.user.name返回用户名。当尝试在视图中执行此操作时,我得到以下错误:

undefined method `name' for nil:NilClass

视图如下:

<% @post.comments.each do |comment| %>
  <p>User:<%= comment.user.name %></p>
  <p>Comment:<%= comment.content %></p>
<% end %>

当我在视图中从用户中删除。name时,应用程序显示看起来像是object_id的内容。

User:#<User:0x00000001f62830>
Comment:Test comment

我已经尝试重置这里提到的数据库:在Rails中发表评论时显示用户名

我也试图解决这里提到的proxy_id:在评论中返回问题::ActiveRecord_Associations_Collection

我不知道还能尝试什么。此外,当我重置评论表时,其中没有数据,应用程序仍然显示:

User:  
Comment: 

,即使其中没有数据,它也会循环执行。我认为这与动态查找器混淆的id,但我试图将其全部移动到控制器,这里提到的,检索用户名与find_by_id(comment.user_id).name不工作,我仍然得到未定义的方法错误。什么好主意吗?感谢你的洞察力。我没有使用评论gem,我在cloud9中开发,我使用PostgreSQL。

我在这篇文章中发现了这个问题:使用<%= render comments %>总是输出一个空的部分,即使数据库中没有

"问题是表单在<%= render @post.comments %>之上,所以当您到达所有评论的部分时,即使数据库中没有,也可以将<%= render "comments/form" %>放在下面来解决这个问题。"

相关内容

  • 没有找到相关文章

最新更新