Rails4多输入自动完成表单-HTML数据id元素被覆盖

Rails4多输入自动完成表单-HTML数据id元素被覆盖,html,ruby-on-rails,ruby-on-rails-4,jquery-ui-autocomplete,Html,Ruby On Rails,Ruby On Rails 4,Jquery Ui Autocomplete,我正在尝试构建一个表单,该表单将从数据库中建议药物名称,但将发送所选药物的ID以在我的数据库中创建关系 我使用了AutoCompleteGem,它工作得很好,我还使用了它们的提示从元素名称中获取ID,这也很好,但只适用于表单上有一个输入元素的情况。在我的例子中,我需要5个输入,由于我的代码,它不断覆盖名为my_medicine\u id的元素,这导致只保存最后一个元素。你们能想出任何动态更改字段名的解决方案吗 我的处方管理员 [...] def new @prescrip

我正在尝试构建一个表单,该表单将从数据库中建议药物名称,但将发送所选药物的ID以在我的数据库中创建关系

我使用了AutoCompleteGem,它工作得很好,我还使用了它们的提示从元素名称中获取ID,这也很好,但只适用于表单上有一个输入元素的情况。在我的例子中,我需要5个输入,由于我的代码,它不断覆盖名为
my_medicine\u 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>
[...]
[…]
“我的药品id”%>
“#我的(我的)药物(id)”%”>
[...]
生成最终html:


因此,您可以看到,每次它都会覆盖元素
数据id element=“#my_medicine_id”

解决方案

找到解决方案-将的
字段移动到部分并使用
f.options[:child\u index]

固定视图文件:

[...]
            <%= f.fields_for :relations do |builder| %>
                <%= render 'child_form', :f => builder %>
            <% end %>
[...]

我会使用类而不是id,然后将它们全部包装在一个容器中,这样您就可以执行“my_dom.up('.row')。down('.med_id')。value=xx”您能给我一个确切的例子吗?这是我有史以来的第一个网络应用程序,我对其中的大部分内容都不熟悉。谢谢
[...]
            <%= f.fields_for :relations do |builder| %>
                <%= render 'child_form', :f => builder %>
            <% end %>
[...]
<% @it=f.options[:child_index] %>
<%= f.hidden_field :medicine_id, :id => "my_medicine_id#{@it}" %>
<%= f.autocomplete_field :medicine_name, autocomplete_medicine_name_relations_path, :id_element => "#my_medicine_id#{@it}" %>