Ferret - recordNotFound?

2 views
Skip to first unread message

san 1981

unread,
May 23, 2008, 4:10:19 AM5/23/08
to rails...@googlegroups.com
Bonjour,

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/.

Cyril Mougel

unread,
May 23, 2008, 4:25:03 AM5/23/08
to rails...@googlegroups.com
2008/5/23 san 1981 <list-i...@andreas-s.net>:

>
> Bonjour,
>
> 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?

=> Met peut-être plutôt @search.empty?

Pourquoi tu conserve @search ?

--
Cyril Mougel
http://blog.shingara.fr

san 1981

unread,
May 23, 2008, 5:10:55 AM5/23/08
to rails...@googlegroups.com
Cyril Mougel wrote:
> 2008/5/23 san 1981 <list-i...@andreas-s.net>:
>> @search.to_s.blank?
> => 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?

Jordan Bracco

unread,
May 23, 2008, 5:20:42 AM5/23/08
to rails...@googlegroups.com
Hello,

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>:

Cyril Mougel

unread,
May 23, 2008, 5:25:43 AM5/23/08
to rails...@googlegroups.com
2008/5/23 san 1981 <list-i...@andreas-s.net>:

>
> Cyril Mougel wrote:
>> 2008/5/23 san 1981 <list-i...@andreas-s.net>:
>>> @search.to_s.blank?
>> => 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

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

san 1981

unread,
May 23, 2008, 5:35:22 AM5/23/08
to rails...@googlegroups.com
Jordan Bracco wrote:
> Hello,
>
> 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 :)
>
Merci Jordan, je ne reçois plus de messages d'erreur!

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?

san 1981

unread,
May 23, 2008, 5:40:47 AM5/23/08
to rails...@googlegroups.com

Ca fonctionne, merci à tous!
Je regarde le wiki pour une recherche multi models

Reply all
Reply to author
Forward
0 new messages