是否可以使用Rails3 JQuery自动完成宝石选择DISTINCT值?
答案 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]
答案 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