2016-03-25 12 views
0

イム利用装置をリダイレクトしていbefore_action :authenticate_user!Railsのデバイスとは</p> <p>まで sign_inため

ユーザーがログインしていませんし、私はそれがsign_inためのフォームを呼び出す に署名した後、それがリダイレクト埋めるためにクリックしたときに私の問題はあります同じページに、私は例 - のために

は私がログインしていないと私は、ルート・ページ上だと私は私の資格情報を入力するポップアップし、私はshowモーダルにクリックproducts/1を見てみたいし、それが同じページ

に私をリダイレクトします

しかし、私は<% if user_signed_in?%>後に変更すべきかproducts/1

セッションコントローラ

class SessionsController < Devise::SessionsController 
    respond_to :js 
    layout false 
    def create 
    self.resource = warden.authenticate(auth_options) 

    if resource && resource.active_for_authentication? 
     sign_in(resource_name, resource) 
    end 
    end 

end 

でテンプレートcreate.js.erb

<% if user_signed_in?%> 
<%= request.referrer%> 
    window.location.href='<%= request.referrer %>' 
<% else %> 
    $('#login_popup input').parent().addClass('inputbox_error'); 
    $('#log_error_messages').show(); 
    $('input').keydown(function(){ 
    $(this).parent().removeClass('inputbox_error') 
    $('#log_error_messages').hide(); 
    }) 
<% end %> 

になりたいサインインした後?

答えて

-1

あなたが考案した方法after_sign_in_path_for使用することができ、サインイン後にユーザーをリダイレクトしたい場合は:: SessionsController

まず店あなたのようなログインモーダル示す時session中にあったURL:次に

session[:login_redirect] = url 

をそのURLにユーザーをリダイレクトしてサインインしてください。

class SessionsController < Devise::SessionsController 
    def after_sign_in_path_for(resource) 
    session[:login_redirect] 
    end 
end 

また、セッションのルートでごroutes.rbをを更新:

devise_for :user, :controllers => {:sessions => "sessions"} 
関連する問題