On Mon, Dec 3, 2012 at 6:26 AM, Jean <[email protected]> wrote:

> Hello guys,
>
> I trying to create the conditions of my search, but I have some troubles.
>
> This is the method I'm trying to create in my model.
>
> def self.searchadv(title, place, category, date)
>     !title.blank? ? conditions = ['title LIKE ?', "%#{title}%"] : conditions 
> = []
>     if conditions
>         !place.blank? ? conditions << [' AND place LIKE ?', "%#{place}%"] :  
> conditions << []
>         !place.blank? ? conditions << [' AND category LIKE ?', "%#{place}%"] 
> :  conditions << []
>         !place.blank? ? conditions << [' AND date LIKE ?', "%#{place}%"] :  
> conditions << []
>     else
>         !place.blank? ? conditions << [' place LIKE ?', "%#{place}%"] :  
> conditions << []
>         !place.blank? ? conditions << [' category LIKE ?', "%#{place}%"] :  
> conditions << []
>         !place.blank? ? conditions << [' date LIKE ?', "%#{place}%"] :  
> conditions << []
>     end
>     find(:all, :conditions => conditions)end
>
> I get this error
>
> wrong number of bind variables (4 for 1) in: title LIKE ?
>
> if I delete this:
>
> if conditions
>     !place.blank? ? conditions << [' AND place LIKE ?', "%#{place}%"] :  
> conditions << []
>     !place.blank? ? conditions << [' AND category LIKE ?', "%#{place}%"] :  
> conditions << []
>     !place.blank? ? conditions << [' AND date LIKE ?', "%#{place}%"] :  
> conditions << []else
>     !place.blank? ? conditions << [' place LIKE ?', "%#{place}%"] :  
> conditions << []
>     !place.blank? ? conditions << [' category LIKE ?', "%#{place}%"] :  
> conditions << []
>     !place.blank? ? conditions << [' date LIKE ?', "%#{place}%"] :  
> conditions << []end
>
> Everything works great, but I need this other options in order to create
> my search and I don't undertand why the error is in the "LiKE"
>
> Does anyone could help me please?
>
> Thanks in advance!
>

you can also do it like this

def self.searchadv(title, place, category, date)
    klass = scoped

    klass = klass.where(conditions for title here) if title.present?
 klass = klass.where(conditions for place here) if place.present?
klass = klass.where(conditions for category here) if category.present?
   klass = klass.where(conditions for date here) if date.present?

    scopedend

This is using rails 3.  But you can still use this for rails 2.3 (i'm not
sure what version they introduced this),
you just have to change the where calls to scoped



> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-/6upZgpqP5hMJ.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
-------------------------------------------------------------
visit my blog at http://jimlabs.heroku.com

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to