2010-02-11 5 views
0

Je travaille avec will_paginate pour créer une table triable et consultable. J'ai tout pour fonctionner correctement à l'exception de la boîte de recherche (filtre). À l'heure actuelle, lorsque je sélectionne une requête différente (autre que "title") et que je recherche quelque chose, elle ne recherche que les requêtes de titre. Quelqu'un peut-il aider à indiquer où je vais mal?Filtrer une table dans les rails

Merci!

contrôleur d'index

:

filter = case params['sform'] 
    when "filter=Title" then "title" 
    when "filter=Size" then "size" 
    when "filter=Film Type" then "film_type" 
    when "filter=Premiere" then "premiere" 
    when "filter=Preferred Date" then "preferred_date" 
    when "filter=Actual Date" then "actual_date" 
end 


sort = case params['sort'] 
     when "title" then "title" 
     when "premiere" then "premiere" 
     when "film_type" then "film_type" 
    when "preferred_date" then "preferred_date" 
    when "actual_date" then "actual_date" 
    when "created_at" then "created_at" 
    when "updated_at" then "updated_at" 
     when "size" then "size" 
     when "title_reverse" then "title DESC" 
     when "premiere_reverse" then "premiere DESC" 
     when "film_type_reverse" then "film_type DESC" 
    when "preferred_date_reverse" then "preferred_date DESC" 
    when "actual_date_reverse" then "actual_date DESC" 
    when "created_at_reverse" then "created_at DESC" 
    when "updated_at_reverse" then "updated_at DESC" 
     when "size_reverse" then "size DESC" 

     end 

conditions = ["title LIKE ?", "%#{params[:query]}%"] unless params[:query].nil? 

@total = Video.count(:conditions => conditions) 
@videos = Video.paginate :page => params[:page], :per_page => 100, :order => sort, :conditions => conditions 
if request.xml_http_request? 
    render :partial => "video_list", :layout => false 
end 

vue Index:

<form name="sform" action="" style="display:inline;"> 
<br> 
<label for="item_name">Search by <%= select_tag "filter", "<option>Title</option>,<option>Size</option>,<option>Film Type</option>,<option>Premiere</option>,<option>Preferred Date</option>,<option>Actual Date</option>" %>: </label> 
<%= text_field_tag(:query, params['query'], :size => 10, :id => 'query') %> 

</form> 

<%= image_tag("spinner.gif", 
       :align => "absmiddle", 
       :border => 0, 
       :id => "spinner", 
       :style =>"display: none;") %> 
</p> 

<%= observe_form 'sform', :frequency => 1, 
     :update => 'table', 
     :before => "$('#spinner').show()", 
     :success => "$('#spinner').hide()", 
     :url => {:action => 'list'}, 
     :with => 'sform' %> 


<div id="table"> 
<%= render :partial => "video_list" %> 
</div> 

ne peut toujours pas comprendre comment faire une recherche par le type de filtre. D'autres suggestions?

Répondre

0

Dans la dernière partie là:

conditions = ["title LIKE ?", "%#{params[:query]}%"] unless params[:query].nil? 

Les conditions vous passez sont à la recherche explicitement par titre. Est-ce que c'est ce que tu veux faire?

+0

Essayez également de définir vos valeurs sur une variable. values ​​= {: filter = filter} condition = ": filtre LIKE?", Params [: requête] – Steve

+0

Hmm Je ne suis pas sûr de savoir ce que vous voulez dire en définissant mes valeurs. J'ai obtenu ce code d'un autre site web ... Je ne suis pas encore très bien avec Ruby ... Je peux me déplacer et comprendre la plupart de ce qui se passe, mais cela m'embrouille. Si le filtre est la taille, je veux interroger en fonction de la taille et ainsi de suite. –

Questions connexes