【问题标题】:undefined method `[]' for nil:NilClass when creating a new object创建新对象时为 nil:NilClass 定义的未定义方法“[]”
【发布时间】:2013-01-01 06:29:49
【问题描述】:

所以我搜索并找不到对我有帮助的现有问题。

我有一个模型:

class ClassComments < ActiveRecord::Base
 # attr_accessible :title, :body
 belongs_to :user
 belongs_to :class, :class_name => 'Clas'
end

当我在控制器中调用 c = ClassComments.new 时,我收到此错误:

undefined method `[]' for nil:NilClass

关于造成这种情况的任何想法?我被难住了!

【问题讨论】:

  • 您可能需要考虑一个与“class”不同的名称,因为它是 ruby​​/rails 中的保留字。我认为这就是您拥有:class_name =&gt; 'Clas' 的原因,但这可能会变得非常混乱。 latheesh.com/2010/02/02/rails-reserved-words
  • @JasonTruluck 是的,这就是我最终将课程命名为“clas”的原因。你是说这可能导致问题吗?或者只是一个有用的建议?
  • 实际上,你能包括你的Clas 模型和模式吗?这可能有助于破译这一点。控制器只是普通的脚手架吗?
  • @JasonTruluck 继续采纳你的建议,名字就是问题所在。谢谢!
  • 没问题,我会把它添加到答案中以便可见性。

标签: ruby-on-rails ruby-on-rails-3 activerecord


【解决方案1】:

将类名更改为 ClasClass 以外的名称将解决问题,因为类是 ruby​​/rails 中的保留字。

来源: http://latheesh.com/2010/02/02/rails-reserved-words/

【讨论】:

  • belongs_to :class, :class_name =&gt; 'Clas' 更改为belongs_to :clas,现在可以正常工作了。谢谢!
【解决方案2】:

我认为除了this question中的类名之外,您还需要指定外键

所以在你的情况下,它可能是:

belongs_to :class, :class_name => 'Clas', :foreign_key => "clas_id"

【讨论】:

  • 定义类名应该已经解决了这个问题 - 无论如何都尝试过,但并没有解决问题。
猜你喜欢
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 2013-10-01
  • 2018-10-24
  • 2011-07-27
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多