Ruby on rails nil的未定义方法:NilClass
我得到以下错误。我知道原因是,我正在调用一个相关记录上的函数,但该记录尚未相关,但不知道修复此问题的最佳方法 导致错误的代码:Ruby on rails nil的未定义方法:NilClass,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我得到以下错误。我知道原因是,我正在调用一个相关记录上的函数,但该记录尚未相关,但不知道修复此问题的最佳方法 导致错误的代码: <%= link_to member.names.last.fullname, polymorphic_path([member, Name]) %> 在本例中,名称与成员具有“属于”关系,而成员与名称具有“多个”关系。这恰好是一种多态关系,但我认为这与这个错误无关 调用上述代码且没有相关名称时,错误为: nil:NilClass的未定义方法“full
<%= link_to member.names.last.fullname, polymorphic_path([member, Name]) %>
在本例中,名称与成员具有“属于”关系,而成员与名称具有“多个”关系。这恰好是一种多态关系,但我认为这与这个错误无关
调用上述代码且没有相关名称时,错误为:
nil:NilClass的未定义方法“fullname”
我确信我在这里遗漏了一些基本的东西,可以防止这种情况发生。提前感谢你们提供的任何帮助
标记
更多代码:
class Name < ActiveRecord::Base
belongs_to :person, polymorphic: true
attr_accessible :dob, :dod, :first, :gender, :last, :mi, :prefix, :relation, :suffix
def fullname
first + last
end
end
class Member < ActiveRecord::Base
has_many :names, as: :person
attr_accessible :active, :deleted
end
类名
解决这个问题的快速方法是使用#try
<%= link_to member.names.last.try(:fullname), polymorphic_path([member, Name]) %>
那么,在你看来,你只需要做:
<%= link_to member.fullname, polymorphic_path([member, Name]) %>
如果成员未定义任何名称,则返回默认名称。在这里,它是“约翰·多伊”。但是你可以把它设置成你想要的
另一种解决方案是强制成员至少有一个名称
class Member < ActiveRecord::Base
has_many :names, as: :person
validates :names, presence: true
end
类成员
您的成员将出现验证错误,无法保存,除非他至少指定一个名称。使用此选项,您还需要使用,以允许成员在创建自身时有效地添加其名称,而不是在创建之后。解决此问题的快速方法是使用
#try
<%= link_to member.names.last.try(:fullname), polymorphic_path([member, Name]) %>
那么,在你看来,你只需要做:
<%= link_to member.fullname, polymorphic_path([member, Name]) %>
如果成员未定义任何名称,则返回默认名称。在这里,它是“约翰·多伊”。但是你可以把它设置成你想要的
另一种解决方案是强制成员至少有一个名称
class Member < ActiveRecord::Base
has_many :names, as: :person
validates :names, presence: true
end
类成员
您的成员将出现验证错误,无法保存,除非他至少指定一个名称。使用此选项,您还需要使用,以允许成员在创建自己时有效地添加其名称,而不是在创建之后。非常感谢!哇,你回答了我的问题,之后我还会有2-3个。谢谢你,先生!!!多谢各位!哇,你回答了我的问题,之后我还会有2-3个。谢谢你,先生!!!讨论中的成员还没有任何与之关联的名称。添加默认名称或在询问LastName之前检查您是否有任何名称问题成员尚未有任何与之关联的名称。添加一个默认名称,或在询问最后一个之前检查您是否有任何名称