NameError: неопределенная локальная переменная или метод - PullRequest
1 голос
/ 13 февраля 2012

Не могли бы вы помочь мне решить следующую проблему? Я знаю, что это просто, но мне, кажется, не хватает чего-то очень простого. Когда я представил ': редакторы', вещи, кажется, идут не так, хотя я указываю на правильное имя класса. Спасибо за вашу помощь.

Я определил "страницу" моей модели, как показано ниже -

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

НО, когда я иду на консоль рельсов и набираю

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

Ответы [ 2 ]

0 голосов
/ 11 марта 2015

Эй, я снимаю те же обучающие видео, что и вы, и у меня была та же проблема.Я пересмотрел видео «многие ко многим: просто» и убедился, что код скопирован точно так же, как инструктор, и СОХРАНИЛ!файлы .rb, когда я закончил менять код.Я обнаружил, что скопировал код точно так же, как и инструктор, но не сохранил один из файлов .rb перед запуском консоли Rails, и поэтому получил сообщение об ошибке.Кроме того, после вставки кода, который вам скажет инструктор (и сохранения файла .rb), обязательно выйдите из консоли Rails и перезапустите ее, чтобы обновить все файлы .rb.Я надеюсь, что это поможет вам!

Еще одна вещь, у меня нет строки

    has_many :sections_edits

в моем admin_user.rb.Это может быть потому, что вы дальше, чем я, и я не уверен, что это изменит.Удачи, и дайте мне знать, если вам нужна дополнительная помощь, так как мы работаем над теми же учебными пособиями.

0 голосов
/ 07 марта 2012

Где вы инициализируете «страницу»? Коллекция принадлежащих редакторов принадлежит определенной странице, а не странице в целом. Выделите страницу: page = Page.find ([некоторый критерий]). Затем page.editors вернет редакторов для этой страницы.

...