如何添加用户名才能发表评论?
用户创建评论时。 我们怎么能加上他的名字呢? 我尝试过current_user,但显然只是声明当前用户的名字而不是发表评论的人的姓名。
在用户模型has_many :comments, as: :commentable
注释模型中的belongs_to :commentable, polymorphic: true
在路由中使用resources :users do resources :comments end
细分resources :users do resources :comments end
。
观点/评论/ _comments.html.erb
评论控制器
我通过创建控制器在活动源工作中显示了各种名称。 我是否有原则可以让它成功,因为我已经尝试过并且失败了。
用户迁移
评论迁移
valuations_controller
感谢您的时间!
假设你有
用户模型:
评论模型
评论迁移
您可以通过获取用户的评论名称
编辑:如果你想使用多态关联,编辑你的模型如下 :
编辑:插入评论迁移
与ValuationsController相关的编辑
您正在寻找创建特定评估评论的用户。 @valuation持有此评论。 因此,您可以通过
@valuation.commentable.user.name
获取用户 - 这假设您的Valuation设置了与Comment模型的正确关联。删除
@commentable = @valuation
和@comments = @commentable.comments
。 它们没有错,但在这种情况下,保持具有相同值的变量没有任何意义。在'show'动作中,您已经使用Comment.new指定了@comment。 删除此行,因为您没有在show动作中创建新对象。
您已经在类顶部的before_action中使用相同的值分配了@valutation。 为防止混淆,请在show动作中删除此附加作业。
未来调试的线索:如果您的代码无法正常工作,请尝试在rails控制台中运行。 我们昨天看到,
@comment.commentable.user.name
周围的代码是正确的。 这告诉我,你的控制器肯定有问题。最终解决方案
将
<%= User.find(comment.user_id).name %>
到_comments.html.erb