2010-12-15 6 views
0

Ich möchte redirect_to eine andere Rails-Seite, sowie einige Parameter übergeben, die in der anderen Controller-Aktion zugegriffen werden kann. Wenn ich es so machen, dann ist es ein GET Aufruf standardmäßig (gemäß der HTTP-Spezifikation), was bedeutet, dass die Parameter in der URL sichtbar (das ist keine gute Idee.)HTTP POST und redirect_to eine einzelne Schienen Ansicht

Controller1 
Action1 
    redirect_to path_to_action2(:parameters => "values") 
end 

Controller2 
Action2 
    #...parameters to be accessed here 
end 

Ein Weg Dazu kann ein Zwischenschritt eingeführt werden, indem ein POST-Formular erstellt wird, das dem Benutzer eine Dummy-Nachricht anzeigt und den POST für uns aufruft. Aber ich möchte keinen zusätzlichen Schritt einführen, wie soll ich das machen?

+1

Ich denke, Ihre Antwort ist [redirect_to POST in Schienen] (http://stackoverflow.com/questions/985596/redirect-to-using-post-in-rails) – codevoice

+0

Ich habe allready durch diese Frage gegangen, falls du meine Frage nicht gut gelesen hast. Die Antwort auf die Frage in dem obigen Link ist, einen Zwischenschritt hinzuzufügen, den ich nicht möchte und den ich oben erwähnt habe. Wenn Sie einen anderen Weg kennen, lassen Sie es mich wissen. –

+0

Ich habe deine Frage sorgfältig gelesen. Der erste Satz dort war "Umleitung ist nicht möglich mit POST-Anfragen", Haben Sie es sorgfältig gelesen? Ich denke, es ist eine Antwort auf Ihre Frage. – codevoice

Antwort

1

Aufgrund der Funktionsweise von HTTP gibt es keine Möglichkeit zu tun, was Sie fragen. Jede Weiterleitung ist ein GET. Warum mögen Sie die Parameter nicht, um sichtbar zu sein? Wie wichtig ist das?

Flash-Nachrichten tun etwas ähnliches. Sie speichern die Nachricht in der Benutzersitzung und zerstören sie in der nächsten Anfrage. Du könntest das benutzen. Ich würde versuchen, diese Art von Nachricht zu vermeiden, die aber zuerst passiert.

+0

Es ist sehr wichtig, dass die Parameter versteckt sind und nicht in der URL angezeigt werden. Was sind die Sicherheitsprobleme, wenn wir hierfür Flash-Nachrichten verwenden? –

+0

Sitzungen (also auch Flash-Nachricht), obwohl sie verschlüsselt werden können, werden an die Browser gesendet, so dass sie nie 100% sicher sein können. Sie müssen es auf dem Server speichern, um wirklich sicher zu sein. Außerdem können Sie nicht garantieren, dass die Sitzung das nächste Mal gesendet wird. Und es ist auch nicht RESTful. – iain

Verwandte Themen