ruby on rails使用Typeahead(bootstrap)实现自动完成搜索

时间:2013-02-28 11:34:20

标签: ruby-on-rails ruby autocomplete bootstrap-typeahead

我想在搜索栏中添加自动完成功能。但是当我提交完成的用户时,我得到了这个网址:

/users?utf8=✓&search=Thomas

而不是/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>

我的表格

<%= form_tag users_path, :method => :get do %>
  <%= text_field_tag :search, params[:search], :id => "auto_complete" %>
<% end %>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

从我可以从Bootstrap文档中收集到的内容,typeahead只是为了做到这一点 - 在文本之前输入。它只需要你的输入,看看它的源中是否有与输入匹配的东西,并为完成输入提供了一些选择。如果用户选择替代方法,则typeahead将填写所选字符串。

所以你唯一得到的就是输入字段中的一个字符串。

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

事件如果Bootstrap typeahead知道如何做到这一点,你没有提供所需的信息,因为你只提供了用户的名字。

我认为你想要做的是:

  • 将用户名和用户路径发送到视图
  • 使用某种自动完成小部件,可以在选择项目时触发回调。
  • 使用回调导航到选择用户时所选的用户路径

我对Bootstrap的预先输入并不完全熟悉 - 你可以用它来做这些事情。

但我主张使用更好的文档,例如jQuery UI:s autocomplete。