2009-05-05 12 views
1

私は、 '物'のフィールドを試して更新するために使用しているフォームを持っていますが、おそらく何か愚かなものになってしまいます。次のようにRailsをルーティングする際の問題点form_for

私のコードは次のとおりです。

<% form_for :thing, :url => { :action => "update" } do |f| %> 
    <%= f.collection_select :status_id, Thing.statuses, :first, :last %> 
    <%= f.submit 'Submit' %> 
<% end %> 

これは私には正しく見える(@thingがBTW存在しない)私が提出したときに、しかし、私は、などなどなどURL

Unknown action 
No action responded to 145 

を取得しますhttp://localhost:3000/things/145です。私は間違って何をしていますか?私は一種のActionViewを軽蔑

答えて

4

あなたがRESTfulなルーティングを使用していた(と私はあなたがいると仮定している)場合は、単にこれを行うことができます:

<% form_for @thing do |f| %> 
    <%= f.collection_select :status_id, Thing.statuses, :first, :last %> 
    <%= f.submit 'Submit' %> 
<% end %> 

そして、これを@thingnew_record?かどうかに応じて正しい処置を指し示します。

1

はので、私はそれに来るとき、常にさびたんだけど、私は他の誰かが何かドライヤーやクリーナーを考え出すことができると確信してい

<% form_for :thing, :url => 
    url_for(:action => "update", :id => @thing) do |f| %> 

してみてください。

+0

ActionViewが嫌な理由はありますか? ;) –

+0

多くの。完全に別のSOの質問かもしれません。しかし、それを小さく保つようにしましょう:erbは吸う、私はハムが好きです;私は、プロトタイプの代わりにjQueryを使用することを好むだろうが、ヘルパーすべてのGenerareプロトタイプコード;私は一般的にヘルパーのHTML出力を好きではありません。それはダムです:ビューコードはビュー構造自体を認識していません。たとえば、ファイルフィールドを追加すると自動的にマルチパート属性が設定されるようなフォームが必要です。それはできません。 (ハムルではできませんが、私はここでこれ以上のことをするいくつかの驚くべきバプアウェアを持っています。ある日、ギトプに終わるでしょう) – kch

+0

何かクリーナーで更新しました。 –

4

put要求が認識されると、RESTfulルートを使用して、updateアクションがトリガーされます。あなたはおそらくちょうどHTMLオプションとしてメソッドを指定する必要があります。

form_for :thing, :url => { :action => "update" }, :html => { :method => 'put' } do |f| 
+0

それをやり方にするのは安らかな方法ではなく、form_for @thingを実行するとうまくいくでしょう。あまりにも奇妙な。 –