4 Stimmen

Rails3 jquery autocomplete distinct Werte

Ist es möglich, DISTINCT-Werte mit dem Rails3 JQuery-Autocomplete-Plugin auszuwählen?

9voto

chech Punkte 1085

Es ist viel besser und einfacher, Bereiche zu verwenden.

In Ihrem Modell:

scope :uniquely_named, group(:name)

In Ihrem Controller:

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

Diese Lösung ermöglicht die einfache Anwendung komplexerer Filter:

Modell:

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

Controller:

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

Quelle

3voto

Cory Punkte 2538

Scheint nicht so zu sein - aber - das 'autocomplete'-Makro definiert tatsächlich nur eine Aktion in Ihrem Controller. Ich würde darauf verzichten, 'autocomplete' in meinem Controller zu verwenden und die Aktion einfach selbst implementieren...

def autocomplete_for_user_name
   User.select('distinct name')
end

Viel Glück.

2voto

rkleine15 Punkte 147

Ich versuche es so:

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

1voto

Fernando Kosh Punkte 3234

Keine der anderen Antworten funktioniert mit MongoID.

Ich verwende eine Mischung aus vielen Antworten, um dies zu erreichen:

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

  def autocomplete_product_manufacturer
    render_autocomplete(:manufacturer)
  end

  def autocomplete_product_model
    render_autocomplete(:model)

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

Dies verwendet keine Beziehungen. Der Hersteller und das Modell sind String-Felder im Product-Modell.

Vielen Dank an alle für die Antworten.

0voto

Rahul Tapali Punkte 9527

Postgresql:

   scope :uniquely_named, :select => 'distinct name' #Im Model
   autocomplete :Benutzer, :Name, :scopes => [:uniquely_named] #Im Controller

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X