2010-06-10 14 views
2

J'utilise will_paginate pour la pagination mais je n'arrive pas à utiliser plus d'une condition à la fois. Par exemple, si je veux avoir une requête sql qui se termine par "Où office_id = 5", alors c'est assez simple, je peux le faire. mais que faire si je veux faire "Où office_id = 5 ET primary_first = 'Mark'"? Je ne peux pas faire ça. Je n'ai aucune idée de comment entrer plusieurs conditions. Pouvez-vous aider ??Plusieurs conditions avec will_paginate

est Ci-dessous un exemple de mon code:

def self.search(search, page, office_id) 
    paginate :per_page => 5, :page => page, 
      :conditions => ['office_id', "%#{office_id}"], # + ' and primary_first like ?', "%#{params[:search]}%"], 
      #:conditions => ['primary_first', "%#{search}%"], 
      :order => 'created_at' 

fin

Merci pour votre aide!

+0

' "% # {office_id}"' ce qui est le '%' pour voulez-vous faire une comparaison "J'aime"? – jigfox

Répondre

1

essayer :conditions => ["office_id = ? and primary_first = ?", office_id, search]

ou en utilisant un viseur dynamique:

paginate_by_office_id_and_primary_first(office_id, search, :per_page => 5, :page => page, :order => 'created_at')

Ceux-ci ne fonctionne que pour l'équivalence, mais le db est le définir. Si vous devez utiliser LIKE, voir Jens Fahnenbruck's answer

3

Si je comprends bien ce que vous voulez, cela devrait fonctionner:

def self.search(search, page, office_id) 
    paginate :per_page => :page => page, 
      :conditions => ["office_id LIKE ? and primary_first LIKE ?", "%#{office_id}", "%#{search}%"] 
      :order => :created_at 
end