2012-03-08 3 views
1

У меня есть следующие таблицы:Динамически формы изменения на основе значения, выбранного в выпадающем списке в Ruby On Rails

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

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

+0

Необходимо сделать это на Javascript. Это не проблема рельсов. – shingara

ответ

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 для обработки 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(); 
    } 
}) 
Смежные вопросы