Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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 on rails nil的未定义方法:NilClass_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord - Fatal编程技术网

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之前检查您是否有任何名称问题成员尚未有任何与之关联的名称。添加一个默认名称,或在询问最后一个之前检查您是否有任何名称