Ruby on rails RubyonRails使用Typeahead(引导)实现自动完成搜索

Ruby on rails RubyonRails使用Typeahead(引导)实现自动完成搜索,ruby-on-rails,ruby,autocomplete,bootstrap-typeahead,Ruby On Rails,Ruby,Autocomplete,Bootstrap Typeahead,我想将自动完成添加到我的搜索栏。但当我提交完成的用户时,我会得到以下url: /users?utf8=✓&搜索=托马斯 而不是/users/23 我的控制器 @users = User.find(:all, :select=>'name').map(&:name) Javascript <%= javascript_tag "var autocomplete_items = #{ @users };" %> <script type="text/javas

我想将自动完成添加到我的搜索栏。但当我提交完成的用户时,我会得到以下url:

/users?utf8=✓&搜索=托马斯

而不是
/users/23

我的控制器

@users = User.find(:all, :select=>'name').map(&:name)
Javascript

 <%= javascript_tag "var autocomplete_items = #{ @users };" %>

 <script type="text/javascript">
            jQuery(document).ready(function() {
                $('#auto_complete').typeahead({source: autocomplete_items});
            });
 </script>

jQuery(文档).ready(函数(){
$('auto#u complete').typeahead({source:autocomplete_items});
});
我的表格

<%= form_tag users_path, :method => :get do %>
  <%= text_field_tag :search, params[:search], :id => "auto_complete" %>
<% end %>
:get do%>
“自动完成”%>

感谢您的帮助

根据我从引导文档中收集到的信息,
typeahead
的设计就是为了做到这一点——在文本之前键入。它只接受您的输入,查看其源代码中是否有与输入匹配的内容,并提供一些替代方案来完成输入。如果用户选择了替代项,则typeahead将填充所选字符串

因此,您得到的唯一结果是输入字段中的字符串

Typeahead不知道如何构建您所需的链接:
/uses/23

事件如果引导程序typeahead知道如何执行此操作,则您并没有向它提供所需的信息,因为您只向它提供了用户的名称

我想你想做的是:

  • 向视图发送用户名和用户路径
  • 使用某种类型的自动完成小部件,它可以在选择某个项目时触发回调
  • 选择用户时,使用回调导航到所选用户路径
我对Bootstrap的typeahead并不完全熟悉——你可以用它来做这些事情

但我主张使用更好的文档,比如jQueryUI:sAutoComplete