Ruby on Rails: переменные экземпляра и класса не поддерживают значение в контроллере - PullRequest
0 голосов
/ 15 июня 2010

в верхней части моего контроллера, вне всякого метода, у меня есть

    @@javascript_is_disabled = false

и у меня есть методы, которые представление вызывает и вызывает что-то вроде этого

    @@javascript_is_disabled = params[:javascript_disabled]

но когда мне нужно @@ javascript_is_disabled совершенно другим способом ... это всегда ложь.

Я знаю, что он изменяется в методе с параметрами arms ... потому что эти методы ведут себя по-разному, и соответственно

А идеи?

1 Ответ

2 голосов
/ 15 июня 2010

Переменная @@javascript_is_disabled является переменной класса и относится к разным вещам в зависимости от того, откуда вы к ней обращаетесь.Внутри тела класса Controller он не ссылается на то же самое, что и при его использовании из метода контроллера или представления.На самом деле это довольно сложный предмет, включающий Собственные классы

. Я предлагаю реализовать его, используя помощник вида или защищенный метод:

protected

attr_writer :javascript_is_disabled
def javascript_is_disabled
  # Replace false with your intended default value
  @javascript_is_disabled.nil? ? false : @javascript_is_disabled
end

Затем вы можете ссылаться на него изваши представления и методы действия контроллера, такие как атрибут javascript_is_disabled = true или if javascript_is_disabled ...

Вы также можете пропустить часть attr_writer ... и просто всегда не забывать назначать значения переменной экземпляра @javascript_is_disabled = ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...