2016-11-10 13 views
0

ユーザーがカートに商品を追加したときに、彼がログインすることは必須ではありませんが、作成されたカートに入り、「Checkout」ログイン:Rails、Devise - フォームを送信した後にユーザーを返す

<%= 
    link_to_if(current_user.nil?, "Checkout", new_user_session_path) do 
    link_to("Checkout", new_order_path, method: :get) 
    end 
%> 

ログインしていない場合、私はnew_user_session_pathにリダイレクトされます。問題は、ログイン後、彼はindex_pathにリダイレクトされていることです。そして私は彼が彼のカートにリダイレクトされるようにしたい。ロギングと同じ。

私はDeviseを使用していますので、Deviseコントローラを生成してそこから行うべきですか?それはどうやってやるべき?

注:私は現在のカートのためのモジュールを使用しています:

module CurrentCart 

    private 

    def set_cart 
     @cart = Cart.find(session[:cart_id]) 
    rescue ActiveRecord::RecordNotFound 
     @cart = Cart.create 
     session[:cart_id] = @cart.id 
    end 
    end 
+0

https://github.com/plataformatec/devise/wiki/How -Tos –

+0

Serioga、(no)マイナスありがとう。しかし、リンクは受け入れられます。 –

答えて

0

私はこのコードがお手伝いします思う:

class ApplicationController < ActionController::Base 
    def after_sign_in_path_for(resource) 
    #place your route here 
    end 
end 
+0

私のtryは次のとおりです: 'def after_sign_in_path_for(cart) redirect_to @cart end'しかし、AbstractController :: DevRes :: SessionsController#create'エラーでダブルレンダリングエラーが発生しました... –

+0

しかし、このコピー/他の怒っている男は、仕事を作った: 'after_filter:store_action def store_action request.getを除いて返す? if(request.path!= "/ users/sign_in" && request.path! ""/users/sign_up "&& request.path!="/users/password/new "&& request.path!=" "/ users/password/edit" && request.path! ""/users/confirmation "&& request.path!" "/ users/sign_out" && !request.xhr?)#ajax呼び出しを保存しないでください store_location_for (:user、request.fullpath) end end' –

+0

このメソッドをコピーするには、このメソッドのフィルタを使用しないでください。与えられたメソッドのようなrコードです。これは、メソッドを作成する方法です。 – Sunny

関連する問題