7

アプリケーション ナビゲーション バーにサインイン フォームがあり、サインイン時に現在表示しているページにサインイン リダイレクトする簡単な方法があるかどうか疑問に思っていました。ありがとう!

4

5 に答える 5

19

redirect_to(:back)リファラーが与えられている限り、できます。ただし、この回答を見ることをお勧めします。そこに示されているソリューションは、ログインの失敗や OAuth リダイレクトなどに対して回復力があるためです。

于 2013-07-11T19:17:23.453 に答える
2

ユーザーのセッションを作成するコードを作成した場合は、sessions_controller のその後に次の行を追加するだけです。

redirect_to root_url, :notice => "Logged in!"

ここでroot_urlの代わりに、ユーザーをリダイレクトしたい任意のパスを入力できます。ただし、routes.rbにそれがあることを確認してください。sign_in
の失敗を考慮している場合は、renderメソッドを使用してsign_inビューをリロードできます

于 2013-07-11T19:19:35.570 に答える
0

Deviseの人々からのこのソリューションは、うまくいくはずです...

ApplicationControllerのように書きます。

after_filter :store_location

def store_location
  # store last url - this is needed for post-login redirect to whatever the user last visited.
  return unless 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?) # don't store ajax calls
    session[:previous_url] = request.fullpath 
  end
end

def after_sign_in_path_for(resource)
  session[:previous_url] || root_path
end
于 2015-08-08T00:04:51.170 に答える