Rails4-Autocomplete-Formular mit mehreren Eingaben - HTML-Daten-ID-Element überschrieben

Ich versuche ein Formular zu erstellen, das einen Medikamentennamen aus der Datenbank vorschlägt, aber eine ID des ausgewählten Medikaments sendet, um eine Beziehung in meiner Datenbank herzustellen.

Ich habe Autocomplete Gem verwendet, was großartig funktioniert. Ich habe auch deren Hinweis verwendet, um die ID aus dem Elementnamen herauszuholen, und dies funktioniert auch gut, aber nur bis zu dem Punkt, an dem sich EIN EINGABE-Element auf dem Formular befindet. In meinem Fall benötige ich 5 Eingaben und aufgrund meines Codes wird das überschreibende Element weiterhin aufgerufenmy_medicine_id Dadurch wird nur ein letztes Element gespeichert. Können Sie sich eine Lösung für die dynamische Änderung des Feldnamens vorstellen?

Mein PrescriptionsController

[...]
    def new
        @prescription =Prescription.new
        5.times { @prescription.relations.build }
    end
[...]

Meine Sicht

[...]
        <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>
[...]

generiert das endgültige 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>

Wie Sie sehen können, überschreibt es jedes Mal ein Elementdata-id-element="#my_medicine_id".

Antworten auf die Frage(1)

Ihre Antwort auf die Frage