/ / Ruby on Rails, umleiten, wenn Sie im Browser auf die Schaltfläche "Zurück" klicken - Ruby-on-Rails, Weiterleiten, Neuladen, Zurück-Schaltfläche, Suchformular

Ruby on Rails, umleiten, wenn Sie im Browser auf die Schaltfläche "Zurück" klicken - Ruby on Rails, Weiterleiten, Neuladen, Zurück-Schaltfläche, Suchformular

Ich habe ein Suchformular, das angezeigt wirdZu buchende Zimmer Wenn ich ein Zimmer buche und anschließend in meinem Browser auf die Schaltfläche "Zurück" drücke, werden die Suchergebnisse weiterhin angezeigt. Ist es möglich, die Seite neu zu laden, wenn ich zurückschlage, so dass der Benutzer erneut auf die Suchschaltfläche klicken muss, um die verfügbaren Räume anzuzeigen? Ich möchte nur die Standardsuchform ohne die Ergebnisse? Ich habe es schon einmal versucht:

before_filter :set_cache_buster
def set_cache_buster
response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
end

Dadurch wird jedoch nur die Seite mit den noch in der Suche befindlichen Eingabeparametern des Benutzers neu geladen, sodass im Grunde dieselbe Seite wie ohne erneutes Laden angezeigt wird. Vielen Dank

Antworten:

2 für die Antwort № 1

Wenn Ihre Formularmethode "GET" ist, ist die Seite immerVerfügbar, wenn Sie auf die Schaltfläche "Zurück" klicken und die Abfragezeichenfolgen alle in der URL angegeben sind. In vielen Fällen wird dieser Effekt bevorzugt, z. B. können Sie eine Google-Such-URL mit einem Lesezeichen versehen.

Sie können die Formularmethode als "POST" ändern, damit die Seite nicht wieder verfügbar ist.

Hinzufügen

Verwenden Sie dies mit etwas Vorsicht.In der Konvention soll "GET" Daten abrufen und "POST" soll einige Daten hinzufügen. Ein Suchformular wurde erstellt, um Daten abzurufen, daher lautet die Konvention der Formularmethode "GET", hier ist nichts falsch. Ändern Sie es also nur, wenn Sie das wirklich brauchen.

Fügen Sie mehr hinzu OP sagte, er könne die Formmethode nicht ändern

Nun, hier ist ein Hack, wenn Sie möchten, dass das Suchergebnis nur auf Knopfdruck angezeigt wird, anstatt auf eine URL mit Parametern.

Die Idee ist, Javascript zu verwenden, um beim Klicken auf die Schaltfläche eine neue versteckte Eingabe anzuhängen, und dann den Controller zu überprüfen, ob dieser neue Parameter vorhanden ist. Wenn vorhanden, verarbeiten und geben Sie das Ergebnis zurück, andernfalls wird ein Fehler angezeigt.

# JavaScript
$("#the_form button").on("submit", function() {
this.preventDefault();
this.parent.append("<input type="hidden" name="human_hit" value="yes" />");
this.parent.submit();
})

# Controller
def search
if params[:human_hit]
# Do search logic and deliver
else
redirect_to :back, alert: "You need to hit the button to search"
end
end

Dies ist ein Hack und nicht verifiziert, die Idee sollte in der Lage sein, den Trick zu tun.