ruby on rails уроки Rails Переменная для всех действий контроллера




создание приложения rails (2)

Вы можете добавить before_filter в свой ApplicationController, который устанавливает административную переменную перед вызовом любого действия, и вы можете ограничить его только теми действиями, которые вам нужны.

class ApplicationController < ActionController::Base
...
before_filter :set_admin
def set_admin
  @administration = Administration.first
end
..

http://api.rubyonrails.org/v2.3.8/classes/ActionController/Filters/ClassMethods.html

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

@administration = Administration.first

Я хочу, чтобы эта переменная была доступна через каждое действие контроллера во всех моих контроллерах, например, если у меня есть контроллер Product, а внутри него есть обычные CRUD-действия, я хочу, чтобы переменная @administration, как указано выше, была помещена во все Действия CRUD. (Это не было бы необходимо для уничтожения или создания или обновления). У меня много контроллеров во всем моем проекте, и мне было интересно, есть ли более простой способ, чем добавлять его вручную через все действия, в которых я хочу.

Я попробовал глобальную переменную

 $administration = Administration.first

но я столкнулся с проблемой, когда он не обновляется, когда я обновляю фактическое содержимое в таблице Administration.first. Кроме того, я хотел бы избежать глобальных переменных.

Любая помощь приветствуется. Спасибо! :)


Просто продлить пост Christos ...

Если вы не хотите, чтобы @administration было доступно для уничтожения, создания и обновления действий контроллера, добавьте: except =>: action to before_filter вот так:

before_filter :set_admin, :except => [:create, :update, :destroy]

В Rails 4 и 5 before_filter это устарело. Вы можете использовать это вместо этого:

before_action: set_admin, за исключением: [: create,: update,: destroy]







ruby