gpt4 book ai didi

ruby-on-rails - NoMethodError 未定义方法 `name' 为 nil :NilClass

转载 作者:行者123 更新时间:2023-12-03 15:43:10 26 4
gpt4 key购买 nike

我有两个模型帖子和类别。我试图在我的索引和帖 subview 中显示每个帖子的类别名称。我正在使用表连接。但问题是尽管在我的显示 View 中类别显示正确,但它在索引 View 中为 nil:NilClass 给出了 NoMethodError: undefined method `name'。我不明白为什么它显示在我的显示 View 中而不是索引 View 中。

index.html.erb

<% @posts.each do |post| %>
<h2><%= link_to post.title, post %></h2>
<p>বিভাগঃ <%= post.category.name %></p>
<p><%= post.body %></p>
<%= link_to 'দেখুন', post, class: "button tiny" %>&nbsp;
<%= link_to 'সম্পাদনা', edit_post_path(post), class: "button tiny" %>
<% end %>

显示.html.erb
<h2><%= link_to @post.title, @post %></h2>
<h5>বিভাগঃ <%= @post.category.name %></h5>
<p><%= @post.body %></p>

后.rb
class Post < ActiveRecord::Base
validates_presence_of :title, :body, :category
has_many :comments
belongs_to :category
end

类别.rb
class Category < ActiveRecord::Base
has_many :posts
end

最佳答案

您的 @posts实例变量包含 Post 的实例无论出于何种原因,都与父级无关 Category .您可以避免 NilClass通过检查每个 Post 是否出错有一个关联的 Category在打印类别名称之前:

<%= post.category.name if post.category %>

或者,由于存在 PostCategory 无关可能是不可取的,您可能希望将整个块包装在检查 Category 的条件中。 :
<% @posts.each do |post| %>
<% if post.category %> # Check for parent category
# Remaining code
<% end %>
<% end %>

关于ruby-on-rails - NoMethodError 未定义方法 `name' 为 nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21101466/

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