gpt4 book ai didi

html - 具有多个输入的 Rails4 自动完成表单 - HTML data-id-element 被覆盖

转载 作者:行者123 更新时间:2023-11-28 03:22:43 25 4
gpt4 key购买 nike

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

我使用了自动完成 gem,效果很好,我还使用了他们的提示从元素名称中获取 ID,这也很好用,但仅限于表单上有一个 INPUT 元素的地方。在我的例子中,我需要 5 个输入,并且由于我的代码 - 它不断覆盖名为 my_medicine_id 的元素,这导致只有一个 - 最后一个 - 元素被保存。你们能想到任何动态更改字段名称的解决方案吗?

我的处方 Controller

[...]
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" 时所见。

最佳答案

OP 的解决方案。

找到解决方案 - 将 fields_for 内部移动到部分并使用 f.options[:child_index]

固定 View 文件:

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

和部分_child_form.html.erb

<% @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}" %>

关于html - 具有多个输入的 Rails4 自动完成表单 - HTML data-id-element 被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23461902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com