Rails3 JQuery автозаполнение различных значений - PullRequest
4 голосов
/ 18 декабря 2010

Можно ли выбрать значения DISTINCT с помощью гема автозаполнения Rails3 JQuery?

Ответы [ 5 ]

9 голосов
/ 26 марта 2012

Намного лучше и проще использовать области действия.

В вашей модели:

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]

источник

3 голосов
/ 18 декабря 2010

Не отображается - , но - макрос «автозаполнение» действительно просто определяет действие в вашем контроллере. Я отказался бы использовать «автозаполнение» в моем контроллере и просто сам выполнить действие ...

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

Удачи.

2 голосов
/ 16 января 2012

Я пытаюсь это:

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
1 голос
/ 11 августа 2013

Ни один из других ответов не работает с 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

Это не использует отношения. Производитель и модель - это строковое поле в модели продукта.

Спасибо всем за ответы.

0 голосов
/ 11 октября 2013

Postgresql:

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