У меня работает следующий код:
$ ->
$("[id$=\"_phase_id\"]").change(->
common_prefix = "type_well_type_well_phases_attributes_"
cell_pos = $(this).attr("id").match(/\d+/g)
mult = "#" + common_prefix + cell_pos + "_multiplier"
mol = $("#" + common_prefix + cell_pos + "_mol_percent").val()
gpm = "#" + common_prefix + cell_pos + "_GPM"
component_id = $(this).val()
$.getJSON('/phases/' + component_id, (data) ->
pressure_base = 0.0
if $("#type_well_pressure_base").val() == "14.65"
pressure_base = data.base1
else if $("#type_well_pressure_base").val() == "14.696"
pressure_base = data.base2
else if $("#type_well_pressure_base").val() == "14.73"
pressure_base = data.base3
else if $("#type_well_pressure_base").val() == "15.025"
pressure_base = data.base4
mult_value = parseFloat(pressure_base)
$(mult).val mult_value
$(gpm).val bcr_round_to(mult_value * (mol / 100.0), 4) if (mol != "")
)
).trigger "change"
Это прохождение через вложенную форму (phase_attributes) в моем коде Rails для вызова json на основе значения (раскрывающегося списка presure_base), выбранного в моей родительской форме (type_well), а затем вычисление значения (gpm) для вложенной формы , Как вы можете видеть, если фаза «изменена» в раскрывающемся списке фаз, я выбираю соответствующую строку из базы данных и на основе значения pressure_base (14.65, 14.696, 14.73, 15.025) вычисляю значение «gpm» , Все работает.
Теперь я пытаюсь использовать функциональность для автоматического пересчета значений «gpm» вложенной формы, когда пользователь изменяет саму «нажимную базу». Ясно, что я должен пройтись по вложенным строкам (я знаю, как это сделать, чтобы не было проблем), и в основном повторяю процесс снова для каждой вложенной строки. Единственная переменная здесь - это cell_pos. Есть ли способ, которым я могу извлечь подчиненную функцию jQuery / Coffeescript, которая вызывается из моего цикла неоднократно? Я знаю, как это сделать в Ruby / Rails, так как мне это удобно, но у меня меньше опыта с jQuery (еще меньше с Coffeescript).