【问题标题】:Typeahead with railsTypeahead 带导轨
【发布时间】:2015-07-02 15:22:19
【问题描述】:

我正在尝试使用 rails 实现 twitter typeahead。 我已经使用 searchkick gem 和 elasticsearch 完成了这项工作。

这里有个小问题,我的 BloodHound 远程调用是这样的

var engine = new Bloodhound({
        datumTokenizer: function(d) {
            console.log(d);
            return Bloodhound.tokenizers.whitespace(d.username);
        },
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        remote: {
            url: "../users/autocomplete?query=%QUERY"
        }
    });

现在在这里,而不是将 %QUERY 替换为 typeahead 搜索框的值,它只是给出字符串 %QUERY 的原样。

休息一切正常,因为如果我转到网址

http://localhost:3000/users/autocomplete?query=vive

我得到了想要的结果。

只是 %QUERY 没有被替换。

这是表格

<%= form_tag users_path, class:'ui form',method: :get do %>
   <div class="ui small icon input">
    <%= text_field_tag :query, params[:query],class:'typeahead',id:'user_search',placeholder:'Search Breeder' %>
    <i class="search icon"></i>
   </div>
<%end%>

还有控制器

def autocomplete
 render json: User.search(params[:query],autocomplete:true).map{|user| {username:user.username,value:user.id}}           
end

/routes.rb/

resources :users do
   collection do
      get :autocomplete
    end
  end

有人可以帮忙吗。

【问题讨论】:

  • 你能在你的用户模型中显示搜索方法吗?

标签: ruby-on-rails typeahead.js


【解决方案1】:

好吧,在努力寻找答案后,我不知何故让它工作了。

所以对于被困在同一个地方的任何人,这里是解决方案:

var engine = new Bloodhound({
        datumTokenizer: function(d) {
            console.log(d);
            return Bloodhound.tokenizers.whitespace(d.username);
        },
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        remote: {
            url: "../users/autocomplete?query=%QUERY",
            //add wildcard to make it work
            wildcard:"%QUERY"
        }
    });

希望对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2012-05-11
    • 2011-07-21
    相关资源
    最近更新 更多