我需要有关以下错误的帮助:
未定义的方法`键?'为零:NilClass
在我向我的表添加一些数据关联之后发生了这样的事情:
class Crew < ActiveRecord::Base
has_many :Peme, :foreign_key => pemeid, :dependent => destroy
has_many :Training, :foreign_key => trgid, :dependent => destroy
has_many :Visa, :foreign_key => visaid, :dependent => destroy
has_many :Contract, :foreign_key => contid, :dependent => destroy
has_many :FlagEndorsement, :foreign_key => flgendoid, :dependent => destroy
has_many :Seminar, :foreign_key => semid, :dependent => destroy
end
Class Contract < ActiveRecord::Base
attr_accessible :contcost, :contdate, :contid, :contremarks, :conttype, :crewid
belongs_to :Crew, :foreign_key => "crewid"
end
class FlagEndorsement < ActiveRecord::Base
attr_accessible :crewid, :flgendocost, :flgendodate, :flgendoid, :flgendoremarks, :flgendotype
belongs_to :Crew, :foreign_key => "crewid"
end
class Peme < ActiveRecord::Base
attr_accessible :crewid, :pemecost, :pemedate, :pemeid, :pemeremarks, :pemetype
belongs_to :Crew, :foreign_key => "crewid"
end
Class Seminar < ActiveRecord::Base
attr_accessible :crewid, :semcost, :semdate, :semid, :semremarks
belongs_to :Crew, :foreign_key => "crewid"
end
Class Training < ActiveRecord::Base
attr_accessible :crewid, :trgcost, :trgdate, :trgid, :trgremarks, :trgtype
belongs_to :Crew, :foreign_key => "crewid"
end
class Visa < ActiveRecord::Base
attr_accessible :crewid, :visacost, :visadate, :visaid, :visaremarks, :visatype
belongs_to :Crew, :foreign_key => "crewid"
end
我想成为一名依赖于船员的人,培训,签证,flgendorsements,研讨会 但我该怎么办?
答案 0 :(得分:1)
<强> 1 即可。得到你的大/小写分类。 has_many
必须后跟下划线形式的复数关联名称,如下所示:
has_many :flag_endorsements
<强> 2 即可。让你的符号正确:
:foreign_key => pemeid, :dependent => destroy
这不是将:foreign_key
设置为:pemeid
而:dependent
设置为:destroy
,而是查找局部变量pemeid
和dependent
的值。如果不存在局部变量,它将尝试调用不存在的方法pemeid
和dependent
。第二个你为了完全不同的目的在某个地方定义这些方法,你正在调试地狱。
第3 即可。获得正确的命名约定。 crewid
是属性/列的可怕名称。它必须是crew_id
。字面上你指定的每个属性/列都是一样的。请阅读一些有关rails的基本教程,其中每个人都明确表示遵循约定有多好,以及如何围绕约定构建rails,如果你不遵循它们,你的rails东西将无法正常工作。
清理完代码后 - 提供完整的异常跟踪(如果某些内容仍然存在),然后有人可能会帮助您。