gpt4 book ai didi

ruby-on-rails - 即使引用了用户,注释中的未定义方法 'username'

转载 作者:行者123 更新时间:2023-12-05 08:05:56 24 4
gpt4 key购买 nike

我已经尝试在我的应用程序上设置一个评论系统。我已经对评论进行了迁移,因此所有评论都有一个 user_id 和 post_id 被引用。我在我的用户模型中添加了 has_many :comments, through: :posts。我还在我的帖子 Controller 中添加了 has_many :comments 。在我的评论 Controller 中,我还添加了 belongs_to :postbelongs_to :user。当我尝试通过 html.erb 从用户模型调用任何内容时,问题就出现了。当我通过控制台发表评论时,一切都很好,我可以看到是什么用户发表了评论,但是当我尝试显示任何评论时,一切都发生了变化。这是导致错误的部分:

<% @comments.each do |comment| %>
<h3><%= comment.user.username %></h3>
<h4><%= comment.body %></h4>
</div>
<% end %>

它在用户名部分抛出一个错误给我:undefined method `username' for nil:NilClass。此外,即使该帖子没有任何评论,也会在每个帖子中发生这种情况。 body 确实可以工作。

最佳答案

undefined method `username' for nil:NilClass

这是由于username不是nil的属性造成的您需要考虑这样一个事实,即对于您的某些记录,可能是在您编写处理关联的代码之前的遗留数据,没有与评论关联的用户。

更改您的 View 代码以检查是否为 nil

<% @comments.each do |comment| %>
<h3><%= comment.user.username unless comment.user.blank? || comment.user.username.blank?%></h3>
<h4><%= comment.body %></h4>
</div> <%# why a random closing div here, remove it or move it to a more appropriate location to match an opening div%>
<% end %>

或者更好一点

<% @comments.each do |comment| %>
<h3>
<%if comment.user.blank?%>
No user associated with this comment
<%= else comment.user.username.blank?%>
</h3>
<h4><%= comment.body %></h4>
</div> <%# why a random closing div here, remove it or move it to a more appropriate location to match an opening div%>
<% end %>

关于ruby-on-rails - 即使引用了用户,注释中的未定义方法 'username',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62886281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com