2010-11-30 28 views
0

Voici mes modèles:Rails auto_complete avec un sous-ensemble d'objets

class User < ActiveRecord::Base 
    has_many :artists 
end 

class Artist < ActiveRecord::Base 
    belongs_to :user 
end 

Je suis en train de mettre en œuvre un champ de texte auto_complete où les noms d'artistes sont entrés automatiquement:

<%= text_field_with_auto_complete :artist, :name, { :size => 60}, {:skip_style => false, :tokens => ','} %> 

Cela fonctionne, mais autocompletes plus tous les artistes définis dans la base de données. Que dois-je faire pour limiter les résultats auto_complete renvoyés uniquement aux artistes appartenant à l'utilisateur connecté?

Merci beaucoup!

Répondre

2

On peut supposer que vous avez quelque chose comme ça dans votre contrôleur:

def auto_complete_for_artist_name 
    @artists = Artist.find(:all, 
    :conditions => "name LIKE (?)", params[:artist][:name]) 
end 

Vous aurez besoin de changer cela soit ajouter l'utilisateur en cours aux conditions ou utiliser l'association comme ceci:

def auto_complete_for_artist_name 
    # assumes you have a 'current_user' method 
    # which returns the current logged in user 
    @artists = current_user.artists.find(:all, 
    :conditions => "name LIKE (?)", params[:artist][:name]) 
end 

Cela vous donnera seulement les artistes appartenant à l'utilisateur actuel.