передать переменную через несколько контроллеров в рельсах - PullRequest
1 голос
/ 20 февраля 2011

Я хотел, чтобы переменная @user была доступна всем другим контроллерам. Как мне идти с этим.

Ответы [ 4 ]

1 голос
/ 20 февраля 2011

Вот пример

Class User

  def self.current=(u)
    @current_user = u
  end

  def self.current
    @current_user
  end

end

Вы должны установить где-нибудь User.current =, например, в вашем контроллере приложения.

Затем в другой модели или контроллере просто позвоните User.current

0 голосов
/ 20 февраля 2011

Возможно, вы захотите добавить функцию current_user в свой ApplicationController, например:

def current_user
  @current_user ||= User.find( session[:user_id] ) if session[:user_id].present?
end
helper_method :current_user

Теперь вы можете вызывать current_user из всех ваших контроллеров и представлений.Метод @ Intrepidd тоже классный.

0 голосов
/ 20 февраля 2011

Если вы хотите сказать, что хотите текущего пользователя (например), вы можете создать метод / функцию в своей модели и вызвать это.

0 голосов
/ 20 февраля 2011

Переменные уничтожаются между каждым вызовом действия.

Вы должны каждый раз заново создавать экземпляр @user.

Чтобы сделать его чистым, вы можете сделать это в before_filter

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