J'ai installé le plugin act_as_ferret et je souhaite installer un bouton
de recherche pour un modèle.
Pour ça, j'ai ajouté ceci dans mon controller:
def search
@results = Question.find_by_contents(@search) unless
@search.to_s.blank?
@search = params[:q]
end
My model question.rb is so:
class Question < ActiveRecord::Base
acts_as_ferret :fields => [ :description, :answer ]
end
J'ai créé une vue "search.html.erb" dans mon folder "views/questions,"
dans laquelle j'ai placé ceci:
<% if @results %>
<% for question in @results %>
<%= question.description %>
<% end %>
<% else %>
<p>No result</p>
<% end %>
Dans application.html.erb, j'ai ajouté le bouton de recherche pour que
la recherche soit disponible sur toutes les pages:
<form id="search" action="/questions/search" method="get">
<input type="text" id="search-text" name="q" />
<input type="submit" value="OK" />
</form>
Le problème est qu'à l'envoi de la recherche, je reçois ce message:
ActiveRecord::RecordNotFound in QuestionsController#show
Couldn't find Question with ID=search
Je ne maîtrise pas bien Ferret, est-ce que quelqu'un aurait une idée
pour m'aider?
Merci beaucoup!
--
Posted via http://www.ruby-forum.com/.
=> Met peut-être plutôt @search.empty?
Pourquoi tu conserve @search ?
--
Cyril Mougel
http://blog.shingara.fr
Merci pour ton aide Cyril,
J'ai essayé en remplaçant par .empty? mais le problème reste...
C'est la première fois que j'utilise ce plugin et pour m'aider j'ai
suivi le tutoriel proposé sur ce site
http://traceback.fr/posts/21-chercher-la-bonne-voie-dans-rails-ou-comment-utiliser-ferret
Est-ce qu'il existe la possibilité d'utiliser ce plugin dans le cadre
d'une recherche dans plusieurs modèles?
Ton problème est simple: /questions/search.... n'est pas "compris" par
Rails comme étant l'action search ( ActiveRecord::RecordNotFound in
>>>QuestionsController#show<<<
Couldn't find Question with ID=search ).
Tu utilises probablement une route map.ressources. Dans ce cas, ajoute
" , :collection => { :search => :get } " à la route, et ça devrait
marcher :)
2008/5/23 san 1981 <list-i...@andreas-s.net>:
sauf que tu as inversé ces deux lignes :
@search = params[:q]
@results = Post.find_by_contents(@search) unless @search.to_s.blank?
=> Dans ton cas :
@results = Question.find_by_contents(@search) unless
@search.to_s.blank?
@search = params[:q]
>
> Est-ce qu'il existe la possibilité d'utiliser ce plugin dans le cadre
> d'une recherche dans plusieurs modèles?
Jamais utilisé ferret, regarde la documentation et tu sauras :)
http://projects.jkraemer.net/acts_as_ferret/search?q=multiple+model&wiki=on&changeset=on&ticket=on
Par contre il ne trouve aucun résultat? comment s'effectue la recherche?
Pour ce modèle j'ai simplement défini 2 champs que je fais afficher par
une simple boucle standard rails mais rien ne s'affiche?
Ca fonctionne, merci à tous!
Je regarde le wiki pour une recherche multi models