【问题标题】:Rails 3.2.1 Jquery autocompleteRails 3.2.1 Jquery 自动完成
【发布时间】:2012-03-20 14:40:39
【问题描述】:

我已经被困了好几天了。我一直在使用经过修订的 railscasts #102 作为模板。

最终我计划在顶部菜单栏中使用 ajax 来查询两个单独模型的名称字段,这两个模型使用 jquery-ui 自动完成,单击时直接链接到所选搜索结果的显示操作。

p>

但我什至还没有,现在我只是想让自动完成功能与单个模型一起工作。这是我所拥有的:

-机会模型,搜索掉 NAME 属性

-搜索控制器

 def index  
     @opportunities = Opportunity.order(:name).where("name like ?", "#{params[:term]}")  
     render json: @opportunities.map(&:name)  
 end  

搜索.js.coffee

jQuery ->  
   $('#search').autocomplete  
   source: $('#search').data('autocomplete-source')  

搜索视图(/app/views/layouts/application.html.erb:

 <%= text_field_tag 'search', nil, :class => 'search-query ui-autocomplete-input', :placeholder => 'Search', data: {autocomplete_source: search_path} %>  

当我运行此代码时,当我在搜索框中输入字母时(假设我输入字母 B),我得到:
在 2012-03-01 15:17:40 -0800 开始 GET "/search?term=b" for 127.0.0.1
由 SearchController#index 处理为 JSON
参数:{"term"=>"b"}
机会负载 (0.3ms) SELECT "opportunities".* FROM "opportunities" WHERE (name like 'b') ORDER BY opportunity.name, name
1ms 内完成 200 OK (Views: 0.1ms | ActiveRecord: 0.3ms)

我现在期望发生的是自动完成将使用 B,选择模型中的所有名称,然后将它们下拉到自动完成中,相反,我什么也得不到,什么也没有发生。

如果我通过以下方式调整视图:

 <%= text_field_tag 'search', nil, :class => 'search-query ui-autocomplete-input', :placeholder => 'Search', data: {autocomplete_source: @opportunities.map(&:name)} %>  

然后自动完成将起作用,但每个带有搜索栏的页面都会将所有搜索词加载到客户端。由于可能有数千个名称,我不想加载所有数据,我希望对数据库进行 ajax 调用并相应地调整视图。

我是 Rails 新手,所以我确定我在这里犯了一个愚蠢的错误。任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: jquery ruby-on-rails ruby search autocomplete


    【解决方案1】:

    您似乎没有在 like 语句中添加任何通配符

    @opportunities = Opportunity.order(:name).where("name like ?", "#{params[:term]}")  
    

    应该是

    @opportunities = Opportunity.order(:name).where("name like ?", "%#{params[:term]}%") 
    

    这与另一个问题有关: How to search for a text with Active Record in Ruby on Rails 3?

    【讨论】:

    • 非常感谢,这正是问题所在。哇,我想我盯着代码看了很久。
    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2011-02-26
    • 2011-04-26
    • 2011-07-29
    • 2012-12-15
    相关资源
    最近更新 更多