5

Ich bin ein redirect_to in einem meiner Controller auf eine vollständige URL zu erteilen versucht + Ich möchte in einigen ParameternRails redirect_to "www.somewebsite.com" mit GET/POST Parametern?

tun

für Website AI In der Steuerung weitergeben müssen:

redirect_to: "www.siteB.com/my_controller/my_action?my_parameter=123" 

Gibt es eine Schöner, dies in Schienen zu tun?

Antwort

1

Sie können offenbar einen Host-Pass:

redirect_to { :host => "www.siteB.com", :controller => "my_controller", :action => "my_action", :id => 123 } 

Überprüfen Sie die Dokumentation für url_for aus.

+1

Bei dieser Lösung wird davon ausgegangen, dass routes.rb von SiteA eine Route aufweist, die diesem Controller/Aktionspaar entspricht. Dies ist kein Problem, wenn Sie die Standardrouten beibehalten haben. – EmFi

6

Wenn SiteB ist die gleiche Anwendung ausgeführt wird (dh die Strecken die gleichen für diesen Server sind), dann können Sie die Umleitung bauen Sie beschreiben mit:

redirect_to :host => "www.siteB.com", 
      :controller => "my_controller", 
      :action => "my_action", 
      :my_parameter => 123 

Beachten Sie, dass alle Schlüssel nicht von url_for behandelt werden automatisch als Parameter codiert.

+0

Bei dieser Lösung wird davon ausgegangen, dass routes.rb von SiteA eine Route aufweist, die mit diesem Controller-/Aktionspaar übereinstimmt. Dies ist kein Problem, wenn Sie die Standardrouten beibehalten haben. – EmFi

1

Entlang den Linien der anderen Antworten. Wenn Sie einen Controller einrichten, der den Pfad in Ihrem routes.rb von Standort A definiert, können Sie die generierten URL-Helfer verwenden. Überschreibe einfach den: host als Argument.

Beispiel:

Standort A routes.rb:

... 
map.resource whatever 
... 

Standort A Controller:

... 
redirect_to edit_whatever_url(:host => "www.siteB.com", :my_parameter => 123) 
... 

Solange SiteB Webserver (Schienen oder auf andere Weise) erkennt die http://www.siteB.com/whaterver/edit?my_parameter=123 Sie‘ Du bist gut.

Vorbehalt: Beachten Sie, dass das Umleiten eines Posts mit 302 spezifische Konsequenzen hat, wie in RFC 2616 definiert. Kurz gesagt bedeutet dies, dass ein Benutzer aufgefordert wird, seinen Beitrag erneut an die neue URL zu senden, bevor der umgeleitete Post erfolgreich sein kann.

Verwandte Themen