Rails: переменный доступ: от ApplicationController к ActionView - PullRequest
2 голосов
/ 22 октября 2010

Как мне получить доступ в ActionView к переменной, которая была определена в ApplicationController?

В моем случае я бы хотел, чтобы мой макет реагировал на переменную, которая была установлена ​​вApplicationController.

Если бы это было представление, связанное с действием контроллера, мне нужно было бы только настроить экземпляр var в соответствующем действии, и все было бы в порядке.Но доступ к таким данным в макете является для меня чем-то новым.

Спасибо!

1 Ответ

2 голосов
/ 22 октября 2010

Вы можете создать метод в ApplicationController и вызывать этот метод в своих макетах. Вот как restful_authentication (и многие другие плагины аутентификации) создают и управляют current_user. Итак, в ApplicationController:

def current_user
  @current_user ||= User.find_by_id(session[:user_id])
end

А в вашем макете:

<% if current_user %>
  <%= link_to 'logout', logout_path %>
<% else %>
  <%= link_to 'login', new_user_session_path %>
  <%= link_to 'register', new_user_path %>
<% end %>

Это просто надуманный пример, но вы можете увидеть, как он работает. Это не строго переменная, это метод, который кэширует значение при первом вызове и возвращает его.

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