这可能是未回答的 Select2 导轨将数据传递到表单字段的变体
我有一个表单中的字段barrister_id
<%= form_for(@mail) do |f| %>
...
<div class="field">
<%= f.label :barrister_id %><br />
<!-- %= f.collection_select :barrister_id, Barrister.all, :id, :code_and_name % -->
<% @barristers = Barrister.all %>
<%= select_tag :barrister_id, options_from_collection_for_select(@barristers,
:id,:code), id: "barristerselect"%>
</div>
应用程序.html.erb将其链接到javascript Select2 gem,因此:
<script>
$(document).ready(function() { $("#barristerselect").select2(); });
</script>
这为我提供了花哨的 Select2 下拉值。
但是字段值barrister_id仅在params.barrister_id中返回,而不是按params.mail.barrister_id的预期返回,因此输入的值未通过验证为空白。
如图所示,我宁愿使用 f.collection_select 作为选择框,但无法让 Select2 很好地使用它。
伙计们有什么想法吗?
首先,在这种情况下,您应该使用 f.select。有了select_tag你需要这样做
<%= select_tag "mail[barrister_id]", options_from_collection_for_select(@barristers,
:id,:code), id: "barristerselect"%>
如果您使用的是 f.select,请使用此选项。请注意空的大括号。这是因为html_options是 f.select 帮助程序的第四个参数。在此处查看文档。
<%= f.select :barrister_id, options_from_collection_for_select(@barristers,
:id,:code), {}, id: "barristerselect" %>
您更改了选择控件的 id。尝试将 id 更改为 mail_barrister_id(由帮助程序生成select_tag默认 ID)。还应该在 select2 的 java 脚本中更改 id