Rails3 jquery自动完成不同的值

时间:2010-12-18 16:54:19

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

是否可以使用Rails3 JQuery自动完成宝石选择DISTINCT值?

5 个答案:

答案 0 :(得分:9)

使用范围更好更简单。

在你的模特中:

scope :uniquely_named, group(:name)

在您的控制器中:

autocomplete :user, :name, :scopes => [:uniquely_named]

此解决方案允许轻松应用更复杂的过滤:

模型:

scope :uniquely_named, group(:name)
scope :online, where(:online => true)

控制器:

autocomplete :user, :name, :scopes => [:uniquely_named, :online]

source

答案 1 :(得分:3)

似乎不是 - 而是 - “自动完成”宏实际上只是在控制器中定义一个动作。我放弃在我的控制器中使用'autocomplete',然后自己动手实施...

def autocomplete_for_user_name
   User.select('distinct name')
end
祝你好运。

答案 2 :(得分:2)

我试试这个:

class UbicationsController < ApplicationController
  autocomplete :ubication, :name

  def autocomplete_ubication_name
    render json: Ubication.select("DISTINCT name as value").where("LOWER(name) like LOWER(?)", "%#{params[:term]}%")
  end
end

答案 3 :(得分:1)

其他答案都不适用于MongoID。

我使用了许多答案的混合来做到这一点:

class ProductsController < ApplicationController
  autocomplete :product, :manufacturer
  autocomplete :product, :model

  def autocomplete_product_manufacturer
    render_autocomplete(:manufacturer)
  end

  def autocomplete_product_model
    render_autocomplete(:model)
  end

  def render_autocomplete(field)
    render json: Product.where(field => /#{params[:term]}/i).where(domain: @domain).distinct(field)
  end
end

这不使用关系。制造商和型号是产品型号上的字符串字段。

谢谢大家的回答。

答案 4 :(得分:0)

<强> PostgreSQL的:

   scope :uniquely_named, :select => 'distinct name' #In model
   autocomplete :user, :name, :scopes => [:uniquely_named] #In controller