2016-04-03 6 views
-2

Ich möchte wissen, ob es möglich ist, einen Wert für eine Sitzungsvariable in einer Ansichtsseite (.html.erb) zu definieren und in einem Controller zu verwenden?Rails: Ist es möglich, eine Session-Variable in einem Rails-Controller zu verwenden?

Zum Beispiel:

um Controller, new.html.erb:

session[:amount] = @order.amount 

in Zahlungs Controller-Datei:

@amount = session[:amount] 

Ich habe eine Variable in meinem Controller, der seinen Wert sollte basierend auf Variablen geändert werden, die ich in einer der Ansichten bekomme. Da der Wert in einer Sitzung gespeichert wird, muss ich den Sitzungswert in meinem Controller verwenden. Vielen Dank im Voraus für Beschreibungen und Antworten.

+0

Warum versuchst du es nicht einfach, wenn das möglich ist? – spickermann

+0

Sie sollten "Sitzung [: Menge]' nicht in Ihrer Ansicht, sondern in Ihrem Controller einstellen. –

+0

@spickermann Ich habe versucht und ich habe einen Fehler, aber ich bin mir nicht sicher, ob der Fehler wegen dieses Problems oder im Zusammenhang mit anderen Problemen ist! –

Antwort

0

Wie ich es versucht habe, habe ich festgestellt, dass es möglich ist, einen Parameter aus einer Ansicht mit einer Sitzungsvariablen an einen Controller übergeben. Das Problem, das ich hatte, war auf den Typ des Wertes der Variablen zurückzuführen. Ich habe eine Sitzungsvariable verwendet und den Typ mit der Funktion "flood" geändert, und das Problem ist gelöst.

Ich habe die Frage in ihrer allgemeinen Form gestellt, um mehr über die Sitzungsvariablen zu erfahren, aber leider habe ich keine richtigen Antworten erhalten.

-1

Das Problem, dem Sie gegenüberstehen, besteht darin, Persistenzdaten für mehrere Anforderungen zu erstellen.

Sie können in der Schienenansicht keine Sitzung festlegen. Da das ganze Prinzip der Sitzung ist, persistente Daten auf der Serverseite zu haben. Um Ihr Problem anzugehen, können Sie Cookies verwenden. Cookies werden verwendet, um persistente Daten über die Anfrage auf der Clientseite zu speichern und werden mit jeder Serveranfrage an den Server gesendet. Das Setzen eines Cookies in Ihrer Ansicht und dessen Verwendung in einem Controller wird Ihrem Zweck dienen.

+0

Rails-Ansichten sind Vorlagen, die von den Rails-Controllern auf dem Server verwendet werden, und "Session" steht ihnen zur Verfügung. – Satya

0

Sie sagen

welche sollte seinen Wert auf Basis variabler geändert werden ich in einem die Ansichten

Wie wirkt sich die Ansicht erhalten, den Wert bekommen?

  • Wenn Sie es durch eine Benutzereingabe erhalten:

in der Ansicht mit Ruby wird nicht helfen, da der Benutzer mit einer HTML-Seite interagiert. Sie sollten einen Formular-POST verwenden, der möglicherweise asynchron ist, um einen Serveraufruf zu tätigen, der den neuen Wert für die Rails-Sitzung festlegt.

  • Wenn Sie es durch etwas in Ruby Berechnung:

Dann könnten Sie und tun soll, ist es wahrscheinlich von der Steuerung und nicht aus der Sicht. Und ja, Sie können Werte in der Rails-Sitzung speichern.

Auch wenn Sie nicht sicher sind, wo Ihr Problem ist (entweder Sitzungsnutzung oder Stripe API-Nutzung), schlage ich vor, dass Sie beide Probleme isolieren, um eine Lösung zu finden. Versuchen Sie zum Beispiel, einen fest codierten Wert in der Sitzung in einer Controller-Methode zu setzen und ihn dann in einer anderen zu lesen. Wenn das funktioniert, verwenden Sie es in Kombination mit Stripe.

+0

Vielen Dank für die Antwort. Das Problem ist gelöst und wie Sie sagten, ist es möglich, Werte in der Rails-Sitzung zu speichern. –

Verwandte Themen