Динамически изменять форму на основе значения, выбранного в выпадающем списке в Ruby on Rails - PullRequest
1 голос
/ 08 марта 2012

У меня есть следующие таблицы:

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, он должен показывать в той же форме комбинированное окно с вариантами условий оплаты из таблицы условий оплаты.

Как это можно сделать в ruby ​​на рельсах? Я хочу, чтобы поле со списком payment_term отображалось только в том случае, если выбранный service_type имеет значение isCredit 1, в противном случае services.payment_terms = 0

1 Ответ

1 голос
/ 08 марта 2012

Во-первых, сделайте поле выбора с условиями оплаты скрытыми (например, с помощью определенного класса CSS). Давайте предположим, что у него есть идентификатор payment_terms.

Затем выберите поле Render Services с дополнительным атрибутом данных, чтобы отслеживать, если service 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 простой скрипт для обработки события change для выбора, заполненного службами, и отображения / скрытия payment_terms выбора в зависимости от isCredit. Я предполагаю, что вы используете 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();
   }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...