Как использовать форму авторизации в Ruby on Rail как отобразить форму входа на всех страницах? - PullRequest
0 голосов
/ 24 августа 2010

Я точно следовал учебному пособию: http://github.com/binarylogic/authlogic_example

Но мне интересно, как я могу заставить форму входа отображаться на всех страницах, когда кто-то не вошел в систему?

Я искал в Google и искал ответы на многих форумах, но единственные решения, которые я смог найти, требуют, чтобы я определил @user_session = UserSession.new для каждой страницы, на которой есть форма входа.

Я хотел бы поставитьформа в файле application.html.erb, и она отображается только когда люди вышли из системы (что мне удалось сделать).

Однако я бы хотел поместить только @user_session = UserSession.new водин контроллер, такой как ApplicationController, так как очень неудобно размещать этот фрагмент кода на каждой странице.Если я оставлю код формы в application.html.erb и этот код не будет определен для страницы в контроллере, то страница выдаст ошибку.

Я не хочу определять его для каждогостраницы, так как потребуется много работы, чтобы удалить ее с каждой отдельной страницы, если я когда-нибудь решу избавиться от формы входа или чего-то еще.

Короче говоря: я хочу поставить форму входа в системукаждая страница моего сайта, и нужно только поместить @user_session = UserSession.new в один контроллер.

Спасибо.

1 Ответ

1 голос
/ 24 августа 2010

В ApplicationController вы можете сделать следующее:

before_filter :prepare_new_session

def prepare_new_session
  @user_session = UserSession.new if current_user.blank?
end

Это даст вам @user_session объект для каждого действия (если пользователь не вошел в систему). Таким образом, вы можете включить форму на каждой странице, поместив ее в файл layouts/application.html.erb.

...