Rails4-автозаполнение формы с несколькими входами - HTML-элемент data-id перезаписывается
Я пытаюсь создать форму, которая будет предлагать название лекарства из базы данных, но отправит идентификатор выбранного лекарства для создания связи в моей базе данных.
Я использовал autocomplete gem, который прекрасно работает, я также использовал их подсказку для получения идентификатора из имени элемента, и это тоже хорошо работает, но только до того момента, когда в форме есть элемент ONE INPUT. В моем случае мне нужно 5 входов и из-за моего кода - он сохраняет перезаписываемый элемент под названиемmy_medicine_id
что приводит к тому, что только один - последний - элемент сохраняется. Ребята, вы можете придумать какое-нибудь решение для динамического изменения имени поля?
Мои РецептыКонтроллер
[...]
def new
@prescription =Prescription.new
5.times { @prescription.relations.build }
end
[...]
Мой взгляд
[...]
<ol>
<%= f.fields_for :relations do |builder| %>
<%= builder.hidden_field :medicine_id, :id => "my_medicine_id" %>
<%= builder.autocomplete_field :medicine_name, autocomplete_medicine_name_relations_path, :id_element => '#my_medicine_id' %>
<% end %>
</ol>
[...]
генерирует окончательный HTML:
<input id="my_medicine_id" type="hidden" rows="5" name="prescription[relations_attributes][0][medicine_id]"></input>
<input id="prescription_relations_attributes_0_medicine_name" type="text" rows="5" name="prescription[relations_attributes][0][medicine_name]" data-id-element="#my_medicine_id" data-autocomplete="/relations/autocomplete_medicine_name"></input>
<input id="my_medicine_id" type="hidden" rows="5" name="prescription[relations_attributes][1][medicine_id]"></input>
<input id="prescription_relations_attributes_1_medicine_name" type="text" rows="5" name="prescription[relations_attributes][1][medicine_name]" data-id-element="#my_medicine_id" data-autocomplete="/relations/autocomplete_medicine_name"></input>
<input id="my_medicine_id" type="hidden" rows="5" name="prescription[relations_attributes][2][medicine_id]"></input>
<input id="prescription_relations_attributes_2_medicine_name" type="text" rows="5" name="prescription[relations_attributes][2][medicine_name]" data-id-element="#my_medicine_id" data-autocomplete="/relations/autocomplete_medicine_name"></input>
<input id="my_medicine_id" type="hidden" rows="5" name="prescription[relations_attributes][3][medicine_id]"></input>
<input id="prescription_relations_attributes_3_medicine_name" type="text" rows="5" name="prescription[relations_attributes][3][medicine_name]" data-id-element="#my_medicine_id" data-autocomplete="/relations/autocomplete_medicine_name"></input>
<input id="my_medicine_id" type="hidden" rows="5" name="prescription[relations_attributes][4][medicine_id]"></input>
<input id="prescription_relations_attributes_4_medicine_name" type="text" rows="5" name="prescription[relations_attributes][4][medicine_name]" data-id-element="#my_medicine_id" data-autocomplete="/relations/autocomplete_medicine_name"></input>
Так как вы можете видеть каждый раз, когда он перезаписывает элементdata-id-element="#my_medicine_id"
.