Rails 3 - конструктор действий в контроллере? - PullRequest
0 голосов
/ 30 июля 2011

Мне нужно сохранить значение из базы данных в переменной, и мне нужно получить доступ к этой переменной из всех действий в моем контроллере.

Например, у меня есть контроллер home, который имеет 3 действия:

  • о
  • контакт
  • Блог

Я пытался сохранить значение в переменной в application_controller.rb, но это не сработало.
Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Речь идет о настойчивости. Чтобы обойти тот факт, что сайт не имеет состояния, вы сохраняете данные, сохраняя их в cookie-файле. Rails дает вам удобный способ сделать это, называемый сессионным хешем. Вы также можете использовать флэш-хэш (это также хэш сессии) В тот момент, когда вы получите значение, которое хотите сохранить, просто позвоните

session[:some_variable] = some_variable

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

some_variable = session[:some_variable]

Замените some_variable на то, что имеет смысл для вас

Если вы хотите сделать это для всех действий контроллера, тогда может быть полезен before_filter Читайте здесь о before_filters http://apidock.com/rails/ActionController/Filters/ClassMethods/before_filter

Не храните большие объекты или массивы объектов в сеансе. Если вам нужно сохранить ссылку на объект active_record, а затем сохранить только идентификатор записи, вы можете получить эту запись с помощью поиска, когда вам это нужно

2 голосов
/ 30 июля 2011

Если вы хотите получить доступ к определенной переменной во всем вашем контроллере, просто выполните следующее.

В контроллер приложения:

before_filter :set_my_variables

private
def set_my_variables
  @variable = MyModel.find(YOUR_CONDITION)
end

А, например, в вашем домашнем контроллере вы сможете получить доступ к @ variable.

Надеюсь, это поможет.

...