<% 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"%>
这是我的代码。我只想在用户选择信用卡作为付款方式时显示信用卡号码字段。但是当我在下拉菜单中选择信用卡时没有任何反应。谢谢你的帮助!
答案 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
您可以将技巧转移到您的问题中。