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.