【问题标题】:Rails 3 rails3-jquery-autocomplete search by several fieldsRails 3 rails3-jquery-autocomplete 搜索几个字段
【发布时间】:2012-06-20 16:14:45
【问题描述】:

我正在使用 rails3-jquery-autocomplete 插件。

我想按多个属性进行搜索,例如 titleapp_number

我尝试了什么:

在模型中:

class Eclaim < ActiveRecord::Base
  scope :search_by_number, ->(query){ 
      (query ? where(["app_number LIKE ?", '%'+ query + '%']) : {})
  }
end

在控制器中:

class ClaimsController < ApplicationController
   autocomplete :eclaim, :title,  :extra_data => [:app_number], :scopes => [:search_by_number]
end

但是当我使用自动完成字段时出现错误:

ArgumentError (wrong number of arguments (0 for 1)):
  app/models/eclaim.rb:16:in `block in <class:Eclaim>'

该插件似乎没有分配 query 变量。

谁能帮帮我?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 autocomplete named-scope


    【解决方案1】:

    希望这会有所帮助: Rails gem rails3-jquery-autocomplete: How do I query multiple fields

    该错误意味着 Eclaim.search_by_number() 被调用时没有任何参数。确实比较好奇。如果上面的链接可以帮助您解决这个问题,请告诉我。

    请注意,:extra_data 仅设置您希望通过 JSON 响应在自动完成器结果中返回的额外属性。

    更新:在你的控制器中试试这个,调整:term

    def get_autocomplete_items(parameters)
       super(parameters)
       items = Eclaim.search_by_number(params[:term])
    end
    

    【讨论】:

    • 谢谢,我已经看到了))如果我在控制台中执行 Eclaim.search_by_number('myquery') 就可以了。但它不能与自动完成插件一起自动工作。也许我不明白什么?我可以用 Eclaim.search_by_number('myquery') 做什么?
    • 也许我应该重新定义 get_autocomplete_items 方法?
    • 看看stackoverflow.com/questions/7244515/… 您可能需要在控制器中覆盖get_autocomplete_items(parameters)
    • 还有这个stackoverflow.com/questions/4858816/… 似乎是要走的路,然后你可以做items = Eclaim.search_by_number(params[:foo]) 确保你调整为:foo =)
    • 覆盖该方法对我来说也失败了。我收到一个奇怪的错误 NoMethodError (undefined method `collect' for true:TrueClass):
    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2012-03-02
    • 2013-06-25
    • 2013-03-02
    • 2015-06-21
    相关资源
    最近更新 更多