現在、私のウェブサイトのすべてのページにあるヘッダーバーにログインポップアップがあります。ログインに成功した後、その人が現在いるページをリロードできるようにしたい。コントローラでこれを行うにはどうすればよいですか?
def create
#declaring and defining user variable stuff
if user.save
#reload current page <--how do I do this?
end
end
ありがとう
私のアプリケーションでは、redirect_to :back
そして、トリックを行います。ただし、一般的でないユースケース(ユーザーが特別なページから来たのですか?)でエラーが発生する可能性があるとは思いませんが、アプリでこれまでのところ見つかりませんでした。
XHRリクエストでページを更新する方法(通常_redirect_to :back
_)を探している場合、応答タイプを変更する方法を探す必要はありません。インラインJS。
format.js {render inline: "location.reload();" }
Elena 言及のように、これは次のようにrespond_toブロックに入れます。
_respond_to do |format|
format.js {render inline: "location.reload();" }
end
_
In Rails 5 redirect_to :back
改善 によって:
redirect_back(fallback_location: root_path)
Archonic の上記の答えは私のために働いた。ただし、Rails 3では、これをrespond_to
ブロックは、「ArgumentError(引数が少なすぎる)」エラーを回避します。
respond_to do |format|
format.js {render inline: "location.reload();" }
end
Rails 5(または古いバージョン))なので、request.referrer
方法。コントローラーからリファラーにリダイレクトするだけで、リクエストの送信元のページが開きます。
redirect_to request.referrer, notice: "You're being redirected"
Rails 5は代替機能を導入しました:
redirect_back(fallback_location: root_path)
HTTP_REFERERがわかっている場合は常にリダイレクトされます。それ以外の場合は、fallback_locationにリダイレクトします。
redirect_to :back
はRails 5.0 https://github.com/Rails/rails/pull/22506 で廃止され、Rails = 5.1