2010-12-16 14 views
0

Ich versuche, einen Wert auf meiner Rails-Website von Flash zu buchen.Schienen und Flash-Parameter

Was ich habe, ist eine URL von http://localhost:3000/users/new, die ich aus Flash posten. Die Variable, die ich als POST-Methode sende, ist score=xx. Aus irgendeinem Grund kann ich den Wert in meinem Schienen-Controller nicht mit der neuen Methode abfragen: @newScore = params[:score]. Wenn ich die Methode zu einem GET ändere, kann ich den Wert ohne Problem erreichen. Also sollte ich den Parameter-Hash für eine POST-Methode verwenden?

Wenn jemand Ratschläge geben kann, würde ich es sehr schätzen.

+1

Wird der Parameter ': score' im Controller empfangen? Überprüfen Sie den Controller, indem Sie in der Ansicht 'debug params' für die Aktion 'users/new' setzen. – Zabba

Antwort

0

Verwenden Sie benutzerdefinierte Routen? Oder machst du einfach resources :users? Besser laufen rake routes. /users/new ist normalerweise ein GET, was sinnvoll ist, da Sie ein Objekt holen. Die Aktion create ist der einzige POST, der auf /users abgebildet wird. Doing /users/new als POST bricht REST.

POST-Daten sind bei einer GET-Methode nicht zulässig. Alle Parameter werden in die Abfragezeichenfolge in der URL eingefügt. Diese Parameter werden weiterhin im Hash params angezeigt.

bearbeiten

Wenn Sie tatsächlich sind versucht, einen Benutzer mit diesem REST Aufruf zu erstellen, müssen Sie http://localhost:3000/users POST, nichthttp://localhost:3000/users/new

bearbeiten

Leider I Ich weiß nicht genug darüber, wie Flash POST-Anfragen sendet, um Ihnen zu sagen, warum Ihre Parameter nicht auftreten. Wenn Sie jedoch versuchen, zu dem Formular zu gelangen, benötigen Sie definitiv ein GET zu http://localhost:3000/users/new. Du sagst, dass du die Variable gut aufnehmen kannst, wenn du ein GET machst, oder? Sie müssen also keinen POST machen.

Wenn Sie nicht möchten, dass der Benutzer die Bewertung bearbeiten kann, speichern Sie den Wert in einer Variablen im Controller, und wenn Sie die Ansicht rendern, geben Sie diesen Wert in ein nicht bearbeitbares Element ein. wie eine deaktivierte Textbox oder vielleicht nur ein Etikett.

bearbeiten

Wenn Sie herausfinden können, wie Sie Ihre Post-Daten zu Rails gegenüber Flash-bekommen, müssen Sie eine POST users_url tun, und dann können Sie Ihre create Methode ändern zurück zu schicken die ID des Benutzers, der erstellt wurde. Dann, wenn Sie das zurückbekommen, können Sie einen weiteren Anruf tätigen, um den Benutzer mit dieser ID zu bearbeiten, wobei das Score-Feld deaktiviert bleibt. Viel Glück.

+0

Ja/Benutzer/Neu ist ein GET. Könnten Sie einen Weg um dies empfehlen? Sollte ich benutzerdefinierte Routen für jede URL erstellen, anstatt Ressourcen zu verwenden: Benutzer – Peter

+0

Was ich sage ist,/Benutzer/neu * sollte * ein GET sein, sonst bricht es REST. Warum also sollten Sie versuchen, einen POST zu einer GET-Methode zu machen? Es macht keinen Sinn. Warum willst du einen POST machen? – Samo

+0

@Peter: versuchen Sie, * einen neuen Benutzer * zu erstellen? Wenn dies der Fall ist, müssen Sie an http: // localhost: 3000/users senden und Ihre Postdaten senden. – Samo