У меня есть выпадающее меню, предоставляющее варианты для штатов США.
Массив состояний объявляется в контроллер, в этой форме:
@us_states = [
['Alabama', 'AL'],
['Alaska', 'AK'],
['Arizona', 'AZ']
]
Теперь у меня есть еще один массив (у контроллера тоже), который имеет число для каждого состояния, в этой форме:
@electricity_table = [
['Alabama',0.078345],
['Alaska',0.1211736],
['Arizona',0.0773004]
]
С событием change
через jQuery я могу видеть с alert
что значение раскрывающегося меню для состояний является вторым столбцом (т.е. AL
, AK
).
Теперь я хочу, чтобы установить text_field с идентификатором electr
в зависимости от состояния выбранного. То есть, если выбрано "AL", то в качестве jQuery: $('#electr').val(0.078345);
Как я могу это достичь?
Я новичок в Ruby on Rails и MVC, поэтому, пожалуйста, несите меня
Редактировать:
Это код выпадающих состояний:
<%= f.input :var_state_oth, label: false, wrapper: :append do %>
<%= f.input_field :var_state_oth, collection: @states, class: 'answer-single', id: 'app_var_state_oth' %>
<% end %>
И это текстовое поле, которое должно быть установлено:
<%= f.input :electr, label: false, wrapper: :append do %>
<input class="answer-single" data-autonumeric="true" data-m-dec="0" id="electr" name="app[electr]" type="text" value="<%= @app.var_energy_cons_reduction %>">
И это сегмент кода jQuery, который предложил @adeneo, с добавлением предупреждения:
$('#var_state_oth').on('change', function() {
alert("change detected");
var val = $('option:selected', this).text();
$('#electr option').prop('selected', false).filter(function() {
return $(this).text().indexOf(val) != -1
}).prop('selected', true);
});
Я даже не вижу предупреждения.
Взгляните на этот jsFiddle для одного решения: http://jsfiddle.net/H6Sqh/1/
$('#var_state_oth').on('change', function () {
var sel = $('option:selected', $(this)).text();
$('#electr').val(elec_rates[sel]);
});
Вам нужно будет получить переменную elec_rates
заполненную данными из @electricity_table
как это @electricity_table
в шаблоне представления, предполагающем шаблон erb:
<script type="text/javascript">
<%= var elec_rates = #{@electricity_table.to_json}; %>
</script>
change
не перехватывается с помощью этого кода jQuery. Я могу только установить функцию onchange
для вызова. Имея это в виду, как будет код? ( this
ключевое слово, о котором я говорю). Кроме того, где в файле _form.html.erb
должен быть добавлен последний код?
Alabama
,Arizona
и т. д.