Pour répondre à ta question initiale, voici le code qui devrait (je ne l'ai pas
essayé moi-même) résoudre ton problème:
before_filter :preprocess_search, :only => [:index, :update, :show, :new]
def index
# vide
end
def search
# vide
end
private
def preprocess_search
@search =
Item.order("title").page(params[:page]).per(3).search(params[:search])
@items = @search.all
end
Cependant, tu peux faire beaucoup plus simple si tu modifies un peu ta vue:
# index.html.erb
<%= stylesheet_link_tag "design" %>
<%= form_for @search, :url => items_path, :html => {:method => :get} do |f| %>
<div id="field-text">
<span class="find">
<%= f.text_field :title_contains, :size => 25, :placeholder =>
"Recherche", :id => "search-txt" %>
</span>
</div>
<div id= "btSearch">
<input id="search_submit" type="image"
src="/images/site/header/search.png">
</div>
<% end %>
Ton contrôleur devient alors juste:
def index
@search =
Item.order("title").page(params[:page]).per(3).search(params[:search])
@items = @search.all
end
De plus, ton contrôleur est maintenant RESTful (ce qui est conseillé dans les
bonnes pratiques).
Bonne chance,
Jean-Baptiste
On 18 May 2011, at 14:31, olivi morel wrote:
>
>
>
> Qd tu fais "Item.search(params[:search])", tu appelles la méthode "search" de
> la classe Item. Ok?
>
> oui j 'appel bien la méthode search de la classe Items
>
> As-tu définis cette méthode toi-même ou bien est-elle définie par une gem (je
> sais juste qu'elle n'est pas définie par Rails)?
>
> j ai défini cette méthode moi même dans la class Items
> pour qu'il interroge la base j'utilise les gems 'meta_where & meta_search'
> j'espère avoir bien répondue à t'es questions.
>
> merci pour tout jean-Baptiste
>
>
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> [email protected]
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> [email protected]
--
Jean-Baptiste Escoyez
http://www.clickyourcar.be
http://twitter.com/jbescoyez
--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse
[email protected]