2010-04-07 6 views
0

github urlComment afficher deux objets différents dans une recherche?

J'utilise une simple recherche qui affiche les résultats de recherche:

@adds = Add.search(params[:search]) 

En plus des résultats de la recherche que je suis en train d'utiliser une méthode, Nearbys(), qui affiche des objets proches à proximité du résultat de la recherche. La méthode suivante affiche les objets proches de 2, mais n'affiche pas l'objet 2. Comment afficher l'objet 2 en conjonction avec les objets proches?

@adds = Add.find(2).nearbys(10) 

Bien que les fonctions de code ci-dessus, lorsque j'utilise la recherche, @adds = Add.search(params[:search]).nearbys(10) une aucune erreur de méthode est retournée, undefined method Nearbys' Array: 0x30c3278`

Comment puis-je rechercher le modèle d'un objet et d'utiliser les La méthode nearbys() AND affiche-t-elle tous les résultats retournés?

Modèle:

def self.search(search) 
    if search 
     find(:all, :conditions => ['address LIKE ?', "%#{search}%"]) 
     # where('address LIKE ?', "%#{search}") 
    else 
     find(:all) 
    end 
    end 
+1

Il serait utile si vous pouviez nous montrer la définition de la méthode 'search'. –

+0

a obtenu là-haut –

+0

Et a répondu. J'espère que je l'ai cloué. –

Répondre

1

Lorsque vous trouvez (2), un modèle d'objet est retourné, mais si vous trouvez (: tous) et tableau est retourné.

La méthode nearbys ne fonctionne que sur une instance de l'objet modèle. Que faire si votre méthode de recherche renvoie un tableau de 10 adresses? Vous ne pouvez pas invoquer à proximité sur le tableau, vous devez faire une boucle à travers votre tableau et appliquer à proximité de chaque adresse donnée dans la boucle.

0

Sans voir votre méthode à proximité, je peux presque dire que c'est le cas d'utilisation parfaite pour une scoped:

def self.search(term) 
    if term 
    scoped({ :conditions => ["address LIKE ?", term] }) 
    else 
    scoped({}) 
    end 
end 

Si nearby est défini sur la classe comme je pense qu'il serait utilisé comme celui-ci :

Model.search("pizza").nearby 

Et que comment vous pouvez limiter la portée.

Questions connexes