根据Ruby on Rails中的combobox中选择的值动态更改表单

时间:2012-03-08 06:29:23

标签: javascript ruby-on-rails ruby ruby-on-rails-3

我有以下表格:

Services
ID| Service_type_id| desc| date|payment_terms

Service_types
ID|NAME|isCredit

Payment_Terms
ID|Payment_Term

服务表包含服务列表。服务类型定义了提供的服务类型。一些service_types是信用卡提供的 - isCredit字段包含布尔值1或0。问题是当用户添加服务时 - 我有一个填充了服务类型的组合框。但是,我需要的是,当用户选择isCredit值为1的服务类型时,它应该在同一表单上显示一个组合框,其中包含付款条款表中的付款条款选项。

如何在轨道上的红宝石中完成?我只希望在选择的service_type具有isCredit值1时显示payment_term组合框,否则services.payment_terms = 0

1 个答案:

答案 0 :(得分:1)

首先,使用隐藏的付款条件呈现选择框(例如,使用特定的css类)。我们假设它有id payment_terms

然后渲染服务选择框以及其他数据属性,以便在服务isCredit 0 | 1

时跟踪
<select id=services>
<% services.each do |service| %>
    <option value=<%=service.id %> data-iscredit=<%=service.type.isCredit ? '1' : '0' %>><%=service.desc %></option>
<% end %>
</select>

在JS中编写一个简单的脚本来处理填充了服务的select的change事件,并在payment_terms上显示/隐藏isCredit select depening。我假设你正在使用jQuery。

$("#services").change(function() {
   var selopt = $(this.children[this.selectedIndex]),
       isCredit = parseInt(selopt.attr('data-iscredit'));
   if (isCredit === 0) {
       $("#payment_terms").hide();
   } else {
       $("#payment_terms").show();
   }
})