У меня есть форма авторизации Authlogic с :remote => true
, которая выполняет небольшую встроенную проверку с помощью шаблона RJS, если имя пользователя / пароль недействительны. Это работает нормально, но когда учетные данные являются действительными, он не перенаправляется должным образом в другом месте.
Вот контроллер, который отвечает на ввод формы:
class UserSessionsController < ApplicationController
respond_to :html, :js
before_filter :require_no_user, :only => [:new, :create]
before_filter :require_user, :only => :destroy
def new
@user_session = UserSession.new
end
def create
@user_session = UserSession.new(params[:user_session])
respond_to do |format|
if @user_session.save
flash[:notice] = "Login successful!"
format.html { redirect_to account_url }
else
format.js
end
end
end
def destroy
current_user_session.destroy
flash[:notice] = "Logout successful!"
redirect_to root_path
end
end
Часть format.js
работает, но если пользователь / пароль хороши (format.html
), ничего не происходит. Однако, если я посмотрю файл development.log, он будет запрашивать страницу account_url. Он просто не перенаправляет вас в браузер. Я думаю, что это возвращает страницу учетной записи через AJAX, и я действительно просто хочу нормальное перенаправление.
HTML-код формы такой:
<%= simple_form_for(
:user_session, @user_session,
:url => { :controller => 'user_sessions', :action => "create" },
:html => { :id => 'login-dropdown' }, :remote => true) do |f| %>