web-dev-qa-db-ja.com

Ruby on Railsで現在のページをリロードするにはどうすればよいですか?

現在、私のウェブサイトのすべてのページにあるヘッダーバーにログインポップアップがあります。ログインに成功した後、その人が現在いるページをリロードできるようにしたい。コントローラでこれを行うにはどうすればよいですか?

def create
  #declaring and defining user variable stuff
  if user.save
    #reload current page <--how do I do this?
  end
end

ありがとう

43
EverTheLearner

私のアプリケーションでは、redirect_to :backそして、トリックを行います。ただし、一般的でないユースケース(ユーザーが特別なページから来たのですか?)でエラーが発生する可能性があるとは思いませんが、アプリでこれまでのところ見つかりませんでした。

49
datalost

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
_
40
Archonic

In Rails 5 redirect_to :back改善 によって:

    redirect_back(fallback_location: root_path)
15
bishal

Archonic の上記の答えは私のために働いた。ただし、Rails 3では、これをrespond_toブロックは、「ArgumentError(引数が少なすぎる)」エラーを回避します。

respond_to do |format|
  format.js {render inline: "location.reload();" }
end
12

Rails 5(または古いバージョン))なので、request.referrer 方法。コントローラーからリファラーにリダイレクトするだけで、リクエストの送信元のページが開きます。

redirect_to request.referrer, notice: "You're being redirected"

9
Shobhit

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

4