根据不同的条件显示确认消息

时间:2016-05-11 06:23:11

标签: ruby-on-rails

我有两个单选按钮,无论是真还是假。在提交时,它们是一个确认消息,取决于从真到假,或从假到真。目前我有这个。

<%= 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?有关。感谢帮助。

2 个答案:

答案 0 :(得分:0)

在呈现视图时,将评估您的条件,而不是基于填写表单时所做的选择。如果您想要实时更改确认,您可能需要添加一些(不显眼的)javascript,以确定当用户选择相应的单选按钮时要使用的消息。

答案 1 :(得分:0)

与BM5k一样,在渲染视图时将评估条件。为了使您的条件符合预期,您的用户必须首先加载视图,更改单选按钮的选择并提交表单。然后,您的registration_path(resource_name)操作需要再次呈现此视图,以便使用您刚刚提交的值重新评估条件。

这可能是您预期的行为,也可能不是。与上面提到的BM5k一样,当用户更改选择时,您可能希望使用一些Javascript来更新客户端上的表单。

如果以前的行为符合您的预期,请尝试使用表单构建器来呈现单选按钮而不是视图助手,如下所示:

<%= f.radio_button :need_subscription, true, class: "subscription_button" %>