Ruby ActionView::Template::Error(对于nil:NilClass,未定义方法'FirstName';):
我的注册和参赛者模型之间有一个相当简单的联系Ruby ActionView::Template::Error(对于nil:NilClass,未定义方法'FirstName';):,ruby,ruby-on-rails-4,activerecord,Ruby,Ruby On Rails 4,Activerecord,我的注册和参赛者模型之间有一个相当简单的联系 class Contestant < ActiveRecord::Base has_many :registrations end class Registration < ActiveRecord::Base belongs_to :contestant end 我正在用activerecord 4.2.6(Rails 4.2.6)运行Ruby-2.3.3-p222。我也试过ruby-2.2.4-p230,结果也一样。问题
class Contestant < ActiveRecord::Base
has_many :registrations
end
class Registration < ActiveRecord::Base
belongs_to :contestant
end
我正在用activerecord 4.2.6(Rails 4.2.6)运行Ruby-2.3.3-p222。我也试过ruby-2.2.4-p230,结果也一样。问题是,我的用户和角色之间也有类似的关联。我可以毫无问题地拨打电话。我已经在两者之间反映了我的逻辑,我不知道为什么。谢谢大家的关注。这里的问题是(99%)并非所有的@注册都与参赛者关联,因此您会遇到一个错误
两种选择:
1) 仅显示关联的参赛者的@注册
:
@registrations.joins(:contestant).each...
2) 使用尝试以避免错误:
registration.contestant.try(:FirstName)
这里的问题是(99%)并非所有的@注册都与参赛者关联,因此您会得到一个错误
两种选择:
1) 仅显示关联的参赛者的@注册
:
@registrations.joins(:contestant).each...
2) 使用尝试以避免错误:
registration.contestant.try(:FirstName)
啊,你说得对!“registration.competitor.try(:FirstName)”显示空白值。这让人困惑,因为我引用的是正确的参赛者ID。另一个谜团需要解决,但这让我朝着正确的方向前进。谢谢大家!@艾德皮托尔:没问题。只需检查ids=@registrations.joins(:competitor)。点击('registrations.id')
注册。其中(id:ids)
-这将是那些拥有参赛者的列表。啊,你说得对!“registration.competitor.try(:FirstName)”显示空白值。这让人困惑,因为我引用的是正确的参赛者ID。另一个谜团需要解决,但这让我朝着正确的方向前进。谢谢大家!@艾德皮托尔:没问题。只需检查ids=@registrations.joins(:competitor)。点击('registrations.id')
注册。其中(id:ids)
-这将是那些拥有参赛者的列表。