2010-12-16 9 views
0

私はFlashから自分のレールのWebサイトに値を投稿しようとしています。RailsとFlashのパラメータ

私が持っているものは、フラッシュから投稿するhttp://localhost:3000/users/newのURLです。私がPOSTメソッドとして送る変数はscore=xxです。何らかの理由で私は新しい方法でレールコントローラの値を取り上げることができません:@newScore = params[:score]。メソッドをGETに変更すると、問題なく値を取得できます。だから私は、POSTメソッドでparamsハッシュを使用する必要がありますか?

誰かがアドバイスを受けることができれば、感謝します。

+1

':score'パラメータがコントローラで受信されていますか? 'users/new'アクションのビューに' debug params'を入れてコントローラをチェックインしてください。 – Zabba

答えて

0

カスタムルートを使用していますか?それとも、あなたはresources :usersですか?より良い実行rake routes/users/newは通常はGETですが、オブジェクトをフェッチしているので意味があります。 createアクションは唯一のPOSTで、/usersにマップします。 POSTとして/users/newを実行すると、RESTが中断されます。

POSTデータはGETメソッドでは使用できません。任意のパラメータがURLのクエリ文字列に配置されます。これらのパラメータは、引き続きparamsハッシュに表示されます。

を編集することは

あなたが実際にこのREST呼び出しを持つユーザーを作成しようとしている場合、あなたは、http://localhost:3000/usersないhttp://localhost:3000/users/new

編集

残念ながら、私をPOSTする必要がありますフラッシュがPOSTリクエストを送信してどのようにあなたのパラメータが間違って来ないのかをあなたに伝える方法について十分に知らない。しかし、フォームにアクセスしようとしている場合は、間違いなくhttp://localhost:3000/users/newへのGETが必要です。あなたはGETをするときに変数をうまく拾うことができると言っていますよね?だからあなたはPOSTをする必要はありません。

ユーザがスコアを編集できないようにするには、コントローラの変数に値を保存し、ビューをレンダリングするときに、その値を編集不可能な要素に置き、無効になっているテキストボックスや、たぶんラベルのようなものです。

編集

あなたがレールにフラッシュから渡ってあなたのポストのデータを取得する方法を見つけ出すことができれば、あなたはusers_urlにPOSTを行う必要があります、そして、あなたが戻って送信するようにcreate方法を変更することができます作成されたユーザーのID。それからあなたはそれを取り戻すと、スコアフィールドを無効のままにして、そのIDを持つユーザーを編集するために別の呼び出しを行うことができます。運が良かった。

+0

はい/ user/newはGETです。これを回避する方法をお勧めしますか?リソースを使用する代わりに、各URLのカスタムルートを作成する必要があります:ユーザー – Peter

+0

私が言っていることは、/ users/new *はGETでなければなりません。そうでなければRESTを破ります。なぜGETメソッドへのPOSTをしようとしますか?それは意味をなさない。なぜPOSTをしたいのですか? – Samo

+0

@Peter:新しいユーザーを作成しようとしていますか?その場合は、http:// localhost:3000/usersに投稿し、投稿データを送信する必要があります。 – Samo

関連する問題