2016-05-11 7 views
0

私は2つのラジオボタンをtrueまたはfalseにしています。また、送信時には、真から偽、偽から真に応じて確認メッセージが表示されます。現在私はこれを持っています。異なる条件に基づいて確認メッセージを表示する

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> 
<table> 
    <tr> 
    <td>User Fee?</td> 
    <td><%= radio_button("user", "need_subscription", "true", class: "subscription_button") %> 
     <%= radio_button("user", "need_subscription", "false", class: "cancel_subscription_button") %> 
    </td> 
    </tr> 
    <tr> 
    <td>Set your fee</td> 
    <td><%= f.number_field :fee %></td> 
    </tr> 
</table> 
    <div class="margin-top-10"> 
    <% if current_user.need_subscription? %> 
     <%= f.submit "Save", data: { confirm: 'foo' } %> 
    <% else %> 
     <%= f.submit "Save", data: { confirm: 'bar' } %> 
    <% end %> 
    </div> 
<% end %> 

私はメッセージ「foo」をユーザーがサブスクリプションを必要とするとき表示されたのですが、ユーザがtrueラジオボタンを選択して送信したときに私がしたいことはメッセージ「foo」を示しています。私はif params select/changed?と関係があると思います。手伝ってくれてありがとう。

+0

? – ihoka

+0

ブール型。ありがとう – pyfl88

+0

これはあなたがラジオボタンの値を確認し、表示するメッセージを表示する必要があります送信イベントにJavaScriptを記述する必要があります。 –

答えて

0

ビューをレンダリングすると条件が評価され、フォームの記入時の選択に基づいて評価されません。リアルタイムで確認を変更する場合は、ユーザーが適切なラジオボタンを選択したときにどのメッセージを使用するかを決定する(控えめな)JavaScriptを追加することをお勧めします。

0

BM5kと同様に、ビューがレンダリングされるときに条件が評価されます。条件を満たすためには、最初にビューをロードし、ラジオボタンの選択を変更してフォームを送信する必要があります。その後、あなたのユーザーが今投稿した値で条件を再評価するためには、このビューを再度レンダリングする必要があります(registration_path(resource_name))。

これは期待どおりの動作である場合と、そうでない場合があります。前述のBM5kのように、ユーザーが選択を変更するときに、JavaScriptを使用してクライアント側のフォームを更新することができます。

かつての行動は、あなたが期待するものである場合には、そのように、代わりにビューヘルパーのラジオボタンをレンダリングするためにフォームビルダを使用してみてください:ユーザーモデル上の `need_subscription`属性でどのような種類の

<%= f.radio_button :need_subscription, true, class: "subscription_button" %> 
関連する問題