Глобальная переменная в Rails - PullRequest
9 голосов
/ 26 марта 2011

У меня есть форма обратной связи в моем приложении Rails.Форма обратной связи требует инициализации переменной @support, и она должна быть видна на каждой странице.Инициализация очень короткая:

@support = Support.new(:id => 1)

Однако было бы неплохо инициализировать эту переменную один раз и получить к ней доступ из любого места.Как это можно сделать?

Ответы [ 4 ]

12 голосов
/ 26 марта 2011

вы можете использовать вспомогательный метод (в контроллере приложения) для инициализации вспомогательной переменной. Примерно так:

class ApplicationController < ..
   ...
   helper_method :my_var

   def my_var
      @support = Support.new(:id => 1)
   end
   ...

 end
5 голосов
/ 26 марта 2011

Вместо глобальной переменной вы, вероятно, хотите поместить что-то в ApplicationController.

Или:

before_filter initialize_support

def initialize_support
      @support = Support.new(:id => 1)
end

Или:

helper_method support_form

def support_form
      @support_form ||= Support.new(:id => 1)
end
5 голосов
/ 26 марта 2011

Глобальная переменная начинается со знака доллара '$', например:

$support = Support.new(:id => 1)

Однако глобальные переменные плохие :-) Вам следует прочитать это post от "Simone Carletti".

2 голосов
/ 26 марта 2011

Похоже, что вы действительно хотите сохранить данные в сеансе пользователя, верно? Для получения более подробной информации см. http://www.ozmox.com/2009/10/13/rails-sessions/.

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