it-swarm.com.de

Link zurück zur besuchten Seite vor dem Formular

Ich habe eine Auflistungsseite, dann ein Formular, dann eine Dankeseite. Ich muss einen Link auf die Dankeseite setzen, der den Benutzer zu der Seite zurückbringt, auf der er sich befand, bevor das Formular immer abweichend ist. Ich habe versucht, dies zu verwenden:

= link_to "Back", :back

Dies bringt sie jedoch nur zur vorherigen Seite zurück, also zum Formular.

25
user1738017

Nun, Sie können auf der Formularseite eine Methode festlegen, um diese URL zu sammeln. Die Grundidee besteht darin, eine benutzerdefinierte Sitzungsvariable zu verwenden, um die vorherige URL zu speichern und für die nächste Sitzung beizubehalten.

Angenommen, die Aktion Ihres Formulars lautet dann SomeController # new

class SomeController < ApplicationController
  after_filter "save_my_previous_url", only: [:new]

  def save_my_previous_url
    # session[:previous_url] is a Rails built-in variable to save last url.
    session[:my_previous_url] = URI(request.referer || '').path
  end

end

Dann können Sie auf der Dankeseite diesen my_previous_url von erhalten

 session[:my_previous_url]

Dies sollte in der Lage sein, Ihrem Fall zu entsprechen, der vorherigen URL vor zwei Seiten. 

Haftungsausschluss: Dies wird nicht überprüft. Nur idee.

Hinzufügen

Session gehört zum Controller. Es ist kein Helfer, den Sie direkt in der Ansicht verwenden können. Sie müssen eine Instanzvariable im Controller definieren und dann in der Ansicht verwenden. So was

# Controller
@back_url = session[:my_previous_url]

# View
<%= link_to "Back", @back_url %>
18
Billy Chan

Versuche dies

<%= link_to 'Back', url_for(:back) %>
# if request.env["HTTP_REFERER"] is set to "http://www.example.com"
# => http://www.example.com

hier gibt es mehr Details.

53
panicoper

Sie können das Beispiel aus der Rails-API verwenden:

<%= link_to "Back", :back %>

Rails API Doc für link_to

Die Verwendung eines: back-Symbols anstelle eines Options-Hashes erzeugt einen Link zum Referrer (ein JavaScript-Backlink wird anstelle eines Referrers verwendet, wenn keiner vorhanden ist).

4
ilgam

Da Sie sagen, es könnte sich um eine andere Seite vor dem Formular handeln, kann request_url Ihnen möglicherweise helfen. Sie können Ihr request_url in einem param speichern und, falls vorhanden, zu param_url umleiten.

hier ist eine Quelle, die Sie als Referenz verwenden können . http://programming-tut.blogspot.com/2010/06/Ruby-on-Rails-request-url.html

1
Nich

Bei Verwendung in Controller können Sie diese direkt verwenden:

def some_action
  # some code
  redirect_to :back
end
0
zw963

Das funktioniert für mich:

Im Controller aus der vorherigen Ansicht:

cookies[:original_referrer] = request.orignal_url

um im Browser ein Cookie mit der URL der Ursprungsseite zu setzen

In der Steuerung aus der aktuellen Ansicht:

redirect_to cookies[:original_referrer]
0
Sheldon Hage