视图中的if-else语句

时间:2011-10-24 08:16:43

标签: ruby-on-rails

<% form_for :customer, :url => {:action => :save_order} do |f| %>
    <%= f.error_messages %>

<%= f.label :"Select Payment Method" %>
<%= f.select :payment_method, [['Cash','cash'],['Credit Card','credit card']] %>

<p>
    <%= f.label :customer_first_name %><br />
    <%= f.text_field :first_name %>
</p>


<p>
    <%= f.label :customer_last_name %><br />
    <%= f.text_field :last_name %>
</p>


<p>
    <%= f.label :email_address %><br />
    <%= f.text_field :email %>
</p>
    <% if @customer.payment_method == "Credit Card" %>

<p>
    <%= f.label :credit_card %><br />
    <%= f.text_field :credit_card_number %>
</p>

  <% else %>
  <% end %>
    <%= f.submit "Place Order"%>

这是我的代码。我只想在用户选择信用卡作为付款方式时显示信用卡号码字段。但是当我在下拉菜单中选择信用卡时没有任何反应。谢谢你的帮助!

2 个答案:

答案 0 :(得分:4)

您的if语句将在服务器端运行,但您需要客户端逻辑来响应下拉列表中的更改。您可以显示信用卡'p',但最初通过CSS隐藏它,然后有一些类似于此的jQuery -

$("payment_method").change(function () {
    if ($(this).val() == "credit card") $(".creditcard").show();
})

答案 1 :(得分:1)

您需要使用Javascript来处理此问题。您正在尝试的是无法正常工作,因为代码在服务器端解析一次。

这是一个处理类似问题的Railscast:

http://railscasts.com/episodes/88-dynamic-select-menus

您可以将技巧转移到您的问题中。