2017-09-23 1 views
-1

j'ai un formulaire de recherche sur mon application:Rails 5: recherche par mot-clé et trier par la distance

<%= form_for search_path, method: :get do |f| %> 
    <p> 
     <%= f.label "Search for" %> 
     <%= text_field_tag :search, params[:search] %> 
     <%= submit_tag "search", name: nil %> 
    </p> 
<% end %> 

qui recherche par distance:

def search 
    if params[:search].present? 
     @las = La.near(action,10).reorder('distance') 
    else 
     @las = [] 
    end 
    end 

Les résultats sont classés par distance et de tous les travaux bien jusqu'à ici !! Le seul problème ici est que les résultats n'apparaissent pas en fonction du mot-clé typé. Ainsi, quel que soit le mot clé que je tape, tous les résultats apparaissent et triés par distance.

Une idée de ce que je pourrais faire mal ici ??

Répondre

1

Vous pouvez essayer passer le contenu de params[:search] dans le cadre near:

@items = Item.near(params[:search], 10).reorder('distance') 
+0

Je l'ai à travailler avec ceci: '@items = Item.search (params [: recherche]). Proche (action, 10) .reorder ('distance') 'Mais je veux toujours que les résultats soient trouvés en fonction du mot clé complet tapé !! Des idées comment je peux faire ça ?? – Dev

+1

Je ne sais pas vraiment ce qui est «proche», utilisez-vous une gemme que vous n'avez pas mentionnée? –