rails-jquery-autocomplete 搜索 school_name 但保存 school_id

Posted

技术标签:

【中文标题】rails-jquery-autocomplete 搜索 school_name 但保存 school_id【英文标题】:rails-jquery-autocomplete search for school_name but save school_id 【发布时间】:2015-06-21 14:17:38 【问题描述】:

我有一个学生属于学校的应用。我正在尝试创建注册表单,以便他们开始输入他们学校的名称,并从我拥有的学校数据库中自动填写他们的学校。

我的 rails-jquery-autocomplete gem 运行良好,但是当用户点击提交时它似乎不会保存学校 ID。

正在发送的参数是:

"utf8"=>"✓",
 "user"=>"first_name"=>"test",
 "email"=>"test@test.com",
 "password"=>"[FILTERED]",
 "password_confirmation"=>"[FILTERED]",
 "birthday(3i)"=>"15",
 "birthday(2i)"=>"4",
 "birthday(1i)"=>"1990",
 "school_id"=>"Chiswick Community School",
 "commit"=>"SIGN UP"

如您所见,school_id 填充的是学校名称,而不是 id。

表单对象的代码是:

<div class="form-object">
      <%= f.autocomplete_field :school_id, autocomplete_school_name_users_path, placeholder: 'school/college' %>
</div>

我怎样才能让它向用户显示学校的名称,但只保存 school_id?

我已经环顾了很长时间,以及如何在 autocomplete_field 下找到一些使用 hidden_​​field 标签的提及,但我已经尝试过,但似乎无法让它工作,所以我什至不知道它是否正确接近

(我试过这样:&lt;%= f.hidden_field :school_id, id: 'school_id' %&gt;

【问题讨论】:

您到底在使用什么 gem,有 jquery-autocomplete-rails、rails3-jquery-autocomplete 等,但没有 jQuery-rails-autocomplete。使用您的Gemfile中的名称 rails-jquery-autocomplete 【参考方案1】:

根据gem docs 使用 id_element 选项将使用所选对象的 id 更新目标字段。

<div class="form-object">
  <%= f.autocomplete_field :school_name, 
       autocomplete_school_name_users_path, 
       placeholder: 'school/college',
       id_element: '#school_id' # can be any jQuery selector.
  %>
  <%= f.hidden_field :school_id, id: 'school_id' %>
</div>

【讨论】:

免责声明:我没有实际测试过 - 里程可能会有所不同。 啊,好吧,我真的不明白我需要将 id_element 与 hidden_​​field 一起使用。我自己都试过了,但都没有奏效。现在可以了!

以上是关于rails-jquery-autocomplete 搜索 school_name 但保存 school_id的主要内容,如果未能解决你的问题,请参考以下文章

Cocoon 自动完成模态填充动态字段两次