Ruby on rails 一对多关系中没有方法错误

Ruby on rails 一对多关系中没有方法错误,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,models/user.rb class User < ActiveRecord::Base has_many :clubs, :dependent => :destroy has_many :announcements, :dependent => :destroy end 问题: 当我键入此代码时 视图/公告/index.html.erb <% @announcements.each do |announcement| %> <%= announc

models/user.rb

class User < ActiveRecord::Base
 has_many :clubs, :dependent => :destroy
 has_many :announcements, :dependent => :destroy
end
问题:

当我键入此代码时

视图/公告/index.html.erb

<% @announcements.each do |announcement| %>
 <%= announcement.user.username %>
<% end %>
当我把代码改成这个时,它就工作了

<% @announcements.each do |announcement| %>
 <%= announcement.club.user.username %>
<% end %>


为什么第一个代码不起作用?这些代码之间的区别是什么。谢谢。

看起来你有一个没有用户设置的公告,但是有一个俱乐部,而俱乐部又有一个用户。也许考虑添加一个验证来要求<代码>:公告上的USERID ID/代码>列。

听起来好像你的一个公告没有用户关联。使用
rails控制台
查看您的Announcements对象,看看是否存在这种情况。
def index
 @announcements = Announcement.find(:all, :include => [:user, :club])
end
<% @announcements.each do |announcement| %>
 <%= announcement.user.username %>
<% end %>
NoMethodError in Announcements#index
 undefined method `username' for nil:NilClass
<% @announcements.each do |announcement| %>
 <%= announcement.club.user.username %>
<% end %>