ユーザー セッションに Authlogic gem を使用しています。
ログイン フォームはモーダルで表示されるため、ユーザーの資格情報が正しくない場合は、モーダルにエラー メッセージを表示したいので、 を使用しますremote: true
。
<%= form_for @user_session, url: user_session_path, ***remote: true do |f| %>
user_session にエラーがあった場合に format.js に応答し、user_session が正しく保存された場合に redirect_back_or_default root_path を返したい
私が抱えている問題は、資格情報が正しい場合、ページがリダイレクトされないことです。
以下は、適切な資格情報を含むリクエストの結果のリクエストのスクリーンショットです。
user_sessions_controller.rb
class UserSessionsController < ApplicationController
before_filter :require_no_user, :only => [:new, :create]
before_filter :require_user, :only => :destroy
def new
@user_session = UserSession.new
if @user_session.save
redirect_back_or_default root_path
else
format.js
end
end
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
redirect_back_or_default root_path
else
render :action => :new
end
end
def destroy
current_user_session.destroy
flash[:notice] = "Logout successful!"
redirect_to authentications_path
end
end
new.js.erb
(function($){
<% if @user_session.errors.any? %>
$errorsContainer = $("#login-errors").empty();
<% @user_session.errors.full_messages.each do |msg| %>
$errorsContainer.append('<div class="alert alert-error"><%= msg %></div>');
<% end %>
<% end %>
})(jQuery)