我有两个单选按钮,无论是真还是假。在提交时,它们是一个确认消息,取决于从真到假,或从假到真。目前我有这个。
<%= 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 %>
我所拥有的是显示消息&#39; foo&#39;当用户需要订阅时,但我想要的是显示消息&#39; foo&#39;当用户选择true
单选按钮并提交时。我认为与if params select/changed?
有关。感谢帮助。
答案 0 :(得分:0)
在呈现视图时,将评估您的条件,而不是基于填写表单时所做的选择。如果您想要实时更改确认,您可能需要添加一些(不显眼的)javascript,以确定当用户选择相应的单选按钮时要使用的消息。
答案 1 :(得分:0)
与BM5k一样,在渲染视图时将评估条件。为了使您的条件符合预期,您的用户必须首先加载视图,更改单选按钮的选择并提交表单。然后,您的registration_path(resource_name)
操作需要再次呈现此视图,以便使用您刚刚提交的值重新评估条件。
这可能是您预期的行为,也可能不是。与上面提到的BM5k一样,当用户更改选择时,您可能希望使用一些Javascript来更新客户端上的表单。
如果以前的行为符合您的预期,请尝试使用表单构建器来呈现单选按钮而不是视图助手,如下所示:
<%= f.radio_button :need_subscription, true, class: "subscription_button" %>