Войти / Зарегистрироваться с той же кнопкой отправки в Rails3 - PullRequest
1 голос
/ 19 августа 2011

Я пытался искать везде, но не могу найти ответ.

Я использую Authlogic для аутентификации в моем приложении Rails. Я хотел бы разрешить пользователям входить в систему или регистрироваться, используя ту же форму и одно и то же действие / кнопку отправки. Пример поведения, к которому я обращаюсь, - это то, как Tumblr обрабатывает свои логин / регистрацию: http://www.tumblr.com/

Когда пользователь вводит свой адрес электронной почты и пароль, если у них уже есть учетная запись, он регистрирует их в своей учетной записи. Эту же форму можно использовать для создания нового блога (с текстовым полем URL).

Моя настоящая форма невероятно проста:

= form_for(@user_session) do |f|
  = f.text_field :email, :placeholder => "email address"
  = f.password_field :password, :placeholder => "password"
  = f.submit "get started"

Я попытался создать настраиваемое действие в контроллере приложения, которое перенаправляет на соответствующий контроллер в зависимости от того, существует ли пользователь, но безрезультатно:

  def login_or_register
    params[:user] = params[:user_session]
    if User.find_by_email(params[:user][:email])
      redirect_to :controller => "user_sessions", :action => "create"
    else
      redirect_to :controller => "users", :action => "create"
    end
  end

Затем я попытался создать нового пользователя, если он не существует со страницы user_sessions/new (внутри контроллера UserSessions). Аналогичным образом я попытался , а не , создать нового пользователя и затем автоматически войти в систему с контроллера Users. Ни один из этих подходов не сработал, и в настоящее время я вернул свой код, поэтому у меня нет примеров, которые я использовал.

Любая помощь или совет будет принята с благодарностью ... большое спасибо!

-Z

1 Ответ

0 голосов
/ 19 августа 2011

Имхо, подход, при котором вы создаете пользователя в user_sessions / new, если он не существует, должен работать.

Жаль, что у вас больше нет кода.Вот одна хитрость, о которой я могу подумать: когда вы создаете нового пользователя, убедитесь, что вы делаете его active, потому что Authlogic не позволит вам создать UserSession для неактивного пользователя.совет: используйте VCS как git

Если у вас есть какая-то новая или сумасшедшая идея, просто создайте новую ветку от своего мастера.Вам не нужно ничего возвращать, просто поменяйте ветки и, возможно, удалите их, если ваша ветка crazy_idea оказалась слишком сумасшедшей.

...