2012-04-03 10 views
0

こんばんはの値を設定し、「送信」レール、Formtastic:スリーは、ボタンは、それぞれが特定の属性違っ

私は単一のフィールド(名前)、ユーザ入力でフォームを設定したいのですが名前を入力し、3つのボタンのうちの1つを選択します。

これらの各ボタンは、同時に特定の属性値を設定し、フォームを送信する必要があります。

不自然な例(「xxxxは」ボタンです):

Name : _________ 
"Good" "Sad" "Tired" 

これは、ユーザーの名前を保存し、[はい/いいえ/多分「users_feeling」属性になります。私は、ユーザーの感情の属性のラジオボックスを持っていないし、別の送信ボタンを望んでいません。

ご協力いただければ幸いです。

+0

これは、formtasticを使用しない方が簡単な場合があります。 –

+0

私は実際にこれを投稿してから5分後に考えていました...私はまだ初心者です...各ボタンにはどんなhtml要素がありますか?私はまだ

+0

答えが役立つことを願っています。むしろ一般的ですが、それを使って何かを理解することができれば幸いです。 –

答えて

3

これを行う方法は一般的に2通りあります。

IMHOもっと良い方法は、隠しフィールドとして設定する属性を追加して、ボタンのデータ属性に設定するためのjavascriptを作成することです。 thisような何か:

$('.my_form button').click -> 
    $('#my_hidden_field').val ($ @).data 'attribute-name' 
    $('.my_form')[0].submit() 

他は、それぞれのボタンが通過します提出することにあるそのフォームを送信パラメータとしてvalue。他の値と同様に、レールコントローラでこれを検出することができます。あなたは、このHTML持っているのであれば:

<input type=submit name=feeling value=Good /> 
<input type=submit name=feeling value=Sad /> 
<input type=submit name=feeling value=Tired /> 

を次に、あなたのコントローラにparams[:feeling]がクリックされたボタンの値を保持する必要があります。なぜ私はこの解決策が特に気に入らないのですか?valueの文字列は、あなたのコントローラをあなたのビューにむしろ激しく結合するユーザーに表示されるものです。将来的にあなたのアプリをローカライズしたいのであれば、これはおそらくあなたを噛んでしまいます。

+0

ありがとう!!私は助けていただきありがとうございます - それはとても基本的です:) – Brandon

+0

1つの小さな変更:各ボタンに別の名前を使用し、値が存在するかどうかをテストします。クリックしたボタンだけがサーバーに送信されます。 – fabspro

関連する問題