0

Deviseに質問しすぎているのではないかと思います。訪問者がフォームに記入してから、「送信」ボタンを押したときにサインアップする必要があります。それは簡単な部分です。私の問題は、ユーザーがサインアップフォームにリダイレクトされて入力すると、元のフォームにリダイレクトしてそのフォームを送信できるようにすることができないことです(ただし、現在はユーザーIDを使用しています)。

アプリケーションコントローラーで「after_sign_in_path_for(resource)」メソッドを試してみましたが、問題は、サインアップ後、request.refererが元のフォームではなく、サインアップフォームであるということです。before_filter:store_locationコールバックを使用することを考えましたが、サインアップフォームのURLである最新の場所が保存されることに気付きました。

サインアップ後にレンダリングする正しい場所として、元のフォームを考案するにはどうすればよいですか?

PSこの質問は、ここにある関連する質問から来ています。

4

1 に答える 1

1

現在のURLをセッションに保存するApplicationControllerでこのmake2メソッドを試してみてください。また、保存されているURLにリダイレクトする別のメソッド(見つからない場合に備えてデフォルトが必要です)を試してください。次に、戻るためにブックマークしたいページ(誰かが一部のページに送り返されることを望まない場合があります)で、URLを保存します。

application.rbのEG

   def store_location
      session['saved_location'] = request.request_uri
   end

   def redirect_to_back_or_default(default)
     if session['saved_location'].nil?
            redirect_to default
     else
       redirect_to session['return-to']
       session['saved_location'] = nil
     end
   end

次に、ユーザーが戻ることができるようにするページで:

次に、after_sign_in_path_for(resource_or_scope)でredirect_to_back_or_default('コンテキストに応じて選択したデフォルトのURLをここに入力')を呼び出して、誰かを送り返します。

于 2012-07-21T00:30:03.987 に答える