Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby ActionView::Template::Error(对于nil:NilClass,未定义方法'FirstName';):_Ruby_Ruby On Rails 4_Activerecord - Fatal编程技术网

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)
-这将是那些拥有
参赛者的列表。