webentwicklung-frage-antwort-db.com.de

Wie kann ich die aktuelle Seite in Ruby on Rails neu laden?

Ich habe derzeit ein Login-Popup in meiner Kopfzeile, das sich auf jeder Seite meiner Website befindet. Ich möchte die aktuelle Seite, auf der sich die Person befindet, nach einer erfolgreichen Anmeldung erneut laden können. Wie mache ich das in der Steuerung?

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

Vielen Dank

43
EverTheLearner

Für meine Bewerbung verwende ich redirect_to :back und es macht den Trick. Ich bezweifle jedoch, dass dies einen Fehler in einem nicht allgemeinen Anwendungsfall (Benutzer von einer speziellen Seite?) Darstellen könnte, aber ich habe ihn in meiner App noch nicht gefunden.

49
datalost

Wenn Sie nach einer Möglichkeit suchen, die Seite mit einer XHR-Anforderung zum Aktualisieren zu bringen (normalerweise redirect_to :back), Müssen Sie nicht nach einer Möglichkeit suchen, den Antworttyp zu ändern. Teilen Sie der Seite einfach mit, dass sie neu geladen werden soll mit inline JS.

format.js {render inline: "location.reload();" }

Wie Elena erwähnt, sollte dies in einem reply_to-Block so aussehen:

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

In Rails 5 redirect_to :backwird verbessert durch:

    redirect_back(fallback_location: root_path)
15
bishal

Archonic 's Antwort oben hat bei mir funktioniert. In Rails 3 musste ich dies jedoch in ein respond_to blockieren, um den Fehler 'ArgumentError (zu wenige Argumente)' zu vermeiden:

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

Seit Rails 5 (oder möglicherweise ältere Versionen) haben Sie ein request.referrer Methode. Sie leiten einfach vom Controller zum Referrer um und es öffnet sich die Seite, von der die Anfrage kam.

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

9
Shobhit

Schienen 5 führten alternative Funktionen ein:

redirect_back(fallback_location: root_path)

Es leitet zurück, wenn der HTTP_REFERER bekannt ist. Andernfalls wird zur Fallback-Position umgeleitet.

Das redirect_to :back ist veraltet in Rails 5.0 https://github.com/Rails/rails/pull/22506 und entfernt seit Rails = 5.1

4