2011-02-01 4 views
6

Estoy usando https://github.com/crowdint/rails3-jquery-autocomplete y parece estar funcionando. El único problema es permitir que digamos que tengo un campo que realiza un autocompletado en todos los títulos de publicaciones, pero quiero que solo muestre los títulos de las publicaciones que el usuario ha creado.Analizando los resultados para rails3 jquery autocomplete plugin

¿Hay alguna manera de hacer algo como esto? Es decir. un find_by o algo?

Gracias!

-Elliot

EDITAR

se dice en la documentación:

If you want to display a different version of what you're looking for, you can use the :display_value option. 

This options receives a method name as the parameter, and that method will be called on the instance when displaying the results. 

class Brand < ActiveRecord::Base 
    def funky_method 
    "#{self.name}.camelize" 
    end 
end 


class ProductsController < Admin::BaseController 
    autocomplete :brand, :name, :display_value => :funky_method 
end 
In the example above, you will search by name, but the autocomplete list will display the result of funky_method 

Siento que esto podría ser utilizado para hacer lo que estoy tratando de lograr pasar, pero no tienes idea de por dónde empezar?

Respuesta

2

debe sobrescribir el método get_Item, por ejemplo, en estos caso estoy filtrar la lista de usuarios a considerar sólo a la última:

class UsersController < ApplicationController 
    autocomplete :user, :email, :full => true 

    def index 
     @users = User.all 
    end 

    def get_items(parameters) 
     [User.last] 
    end 

creo que una de las últimas confirmaciones, cambió el (#get_items) nombre del método. Compruebe su versión del archivo autocomplete.rb.

Compruébelo aquí: https://github.com/crowdint/rails3-jquery-autocomplete/commit/b3c18ac92ced2932ac6e9d17237343b512d2144d#L1R84.

+0

Hola ClaudioA, por lo que este funciona en un grado: get_items def (parámetros) Post.where (: user_id => current_user.id) finales pero el autocompletar ya no funciona , solo muestra una lista de los elementos que satisfacen esas necesidades? – Elliot

+0

aún puede usar el método get_items original llamando a super, más detalles sobre la respuesta – deb

1

Aunque no he probado personalmente, creo que el método de alcance normal en rails3 debería funcionar. Como después de todo alcance es también un método mismo que "funky_method"

escribir un ámbito

en su modelo

alcance: funky_method, lambda {| param1 | : condiciones => {: columna = param1}}

y en su controlador

autocompletar: marca, nombre,: display_value =>: funky_method

deberían trabajar, probar y ver ..

aplausos

sameera

+0

Hola Samira, he intentado: alcance: funky_method, lambda { donde ("post.user_id gusta?", Current_user.id) } Pero no parece que funciona ...? – Elliot

+0

No pude conseguir alcances para trabajar en esta joya, por desgracia. Tuve que modificar get_autocomplete_method directamente. La buena noticia es que puede modificar el método get_autocomplete_items utilizando las consultas de selector de Rails o SQL directo. En este ejemplo, estoy buscando una coincidencia de nombre y apellido. https://gist.github.com/bb3b54f2ec793cf00fd0 – slant

7

Puede anular get_autocomplete_items, pero el primer uso súper para llamar al método original get_autocomplete_items, y luego filtrar los resultados por current_user.id (o post.user.id si el propietario del puesto no es el usuario actual)

def get_autocomplete_items(parameters) 
    items = super(parameters) 
    items = items.where(:user_id => current_user.id) 
    end 

De esta manera usted puede seguir todas las otras opciones que vienen con la gema. Esto debería hacerse en su controlador por cierto.

Otra respuesta sugirió la opción :scope.Investigué eso, pero no es el camino a seguir en este caso, no desea agregar "current_user" y cosas así a sus modelos.

Cuestiones relacionadas