2009-05-11 13 views
2

私は次のようなレールフォーム(動作します)を持っていますが、submit_tagを削除し、ラジオボタンを選択するとすぐにフォームを送信します。それ、どうやったら出来るの?ラジオボタンの選択にサブミットするRailsフォーム

<% form_tag({ :controller => "votes", :action => "create", :id => @item.id }) do %> 
    <p> 
    <% for i in 1..10 do %> 
     <%= radio_button_tag :rating, i %>&nbsp;<%=h i %>&nbsp; 
    <% end %> 
    </p> 
    <p> 
    <%= submit_tag "Create" %> 
    </p> 
<% end %> 

答えて

7

私は正確な解決策を見つけました(入力ユーザーのおかげで、Google検索を再定義できました)。誰もが正しい軌道に乗っていたが、誰もその場にいなかった。

「false、:onclick =>」this.parentNode.submit();「 '」をradio_button_tagフォームヘルパーに追加するだけでした。 falseが選択されているかどうか、残りは明白です。私は似たようなやっているので、この質問は本当に役立ちます

<% form_tag({ :controller => "votes", :action => "create", :id => @item.id }) do %> 
    <% for i in 1..10 do %> 
     <%= radio_button_tag :rating, i, false, :onclick => "this.parentNode.submit();" %>&nbsp;<%=h i %>&nbsp; 
    <% end %> 
<% end %> 
+0

レールバージョン4.2では動作しません! :/ –

+0

Yesssこれは私に時間のトンを救ってくれてありがとう。 –

0

JavaScriptを使用

使用する各ラジオボタンのOnClick()イベントが送信ボタンの上に()を提出呼び出す関数を呼び出します。

私はRailsのRJSにはあまり慣れていませんが、これは比較的簡単です。

1

あなたは、フォーム名がフォームIDである場合、this.formName.submit()を呼び出すラジオボタンにonClickイベントを追加します。ラジオボタンをクリックすると、送信イベントがトリガーされます。

0

これを邪魔にならないようにするには、lowproとプロトタイプを使用するのがすばらしい方法です。そうすれば、すべてのイベントハンドラをJavaScriptに取り込んで、ビューコードを汚染しないようにすることができます。これは、JavaScriptイベントを処理する非常に滑らかな方法です。強くお勧めします。

+0

Railsは実際にはPrototypeをコアJavaScriptライブラリとして使用しています(私は思います).JavaScriptを使いこなす必要はなく、Rails HTMLヘルパーを使用するだけで読みやすく、自動的に生成されます。 – Ash

+1

あなたの右のRailsは自動的にプロトタイプを使用します。問題は、これらのヘルパーがあなたのコードをかなり醜いjavascriptで汚染することです。私はあなたのjavascriptを目立たないようにし、あなたの.jsファイルにjavascriptコードを移動するプロトタイプと組み合わせてlowproを使うことを提案しています。その結果、あなたのビューコードはきれいになります。 – nitecoder

1

正しい解決策は今のように見えます。

はさらに灰の答えに、私は私が少し変わってきたし、私には仕事、下記のフォームだけで罰金、上記のonclickの機能が動作しないことが判明:

<% form_tag({ :controller => "votes", :action => "create", :id => @item.id }) do %> 
    <% for i in 1..10 do %> 
     <%= radio_button_tag :rating, i, false, :onclick => "this.form.submit();" %>&nbsp;<%=h i %>&nbsp; 
    <% end %> 
<% end %> 

は、それが誰かを助ける願っています。

関連する問題