Ferret - recordNotFound?

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

No result


<% end %>

Dans application.html.erb, j’ai ajouté le bouton de recherche pour que
la recherche soit disponible sur toutes les pages:



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!

2008/5/23 san 1981 [email protected]:

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

Pourquoi tu conserve @search ?


Cyril M.

Cyril M. wrote:

2008/5/23 san 1981 [email protected]:

@search.to_s.blank?
=> Met peut-�tre plut�t @search.empty?
Pourquoi tu conserve @search ?


Cyril M.
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

Est-ce qu’il existe la possibilité d’utiliser ce plugin dans le cadre
d’une recherche dans plusieurs modèles?

2008/5/23 san 1981 [email protected]:

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
Félicitations ! Votre domaine a bien été créé chez OVHcloud !

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

http://projects.jkraemer.net/acts_as_ferret/search?q=multiple+model&wiki=on&changeset=on&ticket=on


Cyril M.

Jordan B. 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 :slight_smile:

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?

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

2008/5/23 san 1981 [email protected]:

san 1981 wrote:

Jordan B. 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 :slight_smile:

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?

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