【问题标题】:NameError: undefined local variable or methodNameError:未定义的局部变量或方法
【发布时间】:2012-02-13 18:01:42
【问题描述】:

您能帮我解决以下问题吗?我知道这是基本的,但我似乎缺少一些非常基本的东西。当我介绍 ':editors' 时,事情似乎出错了,尽管我指向了正确的类名。谢谢你的帮助。

我已将我的模型“页面”定义如下 -

class Page < ActiveRecord::Base

  belongs_to :subject
  has_many :sections
  has_and_belongs_to_many :editors, :class_name => "AdminUser"

end

我的 AdminUser.rb 定义如下

class AdminUser < ActiveRecord::Base


  has_and_belongs_to_many :pages
  has_many :section_edits

  scope :named, lambda {|first,last| where(:first_name => first, :last_name => last)}

end

但是当我进入 rails 控制台并输入时

Loading development environment (Rails 3.2.1)
>> page.editors
NameError: undefined local variable or method `page' for main:Object
from (irb):1

【问题讨论】:

  • 嗨,区分大小写吗?您有 Page 类,然后在错误中您有 page.editors 小写

标签: ruby-on-rails nameerror


【解决方案1】:

您在哪里初始化“页面”?拥有编辑器的集合属于特定页面,而不是一般的页面。捞出一个页面:page = Page.find([some criteria])。然后 page.editors 将返回该页面的编辑器。

【讨论】:

    【解决方案2】:

    嘿,我正在制作与您相同的培训视频,但遇到了同样的问题。我所做的是重新观看“多对多关联:简单”视频,并确保我复制的代码与讲师完全一样,并确保保存!完成更改代码后的 .rb 文件。我发现我复制了与讲师完全一样的代码,但在启动我的 Rails 控制台之前没有保存其中一个 .rb 文件,所以我收到了错误。此外,在插入讲师告诉您执行的代码(并保存 .rb 文件)后,请确保退出 Rails 控制台并重新启动它,以便更新所有 .rb 文件。希望对您有所帮助!

    还有一件事,我没有电话线

        has_many :sections_edits
    

    在我的 admin_user.rb 中。这可能是因为你比我走得更远,我不确定这是否会有所作为。祝你好运,如果您需要进一步的帮助,请告诉我,因为我们正在学习相同的培训教程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2016-02-14
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多