On Tue, Dec 4, 2012 at 11:46 AM, Jim Ruther Nill <jvn...@gmail.com> wrote:

>
>
>
> On Mon, Dec 3, 2012 at 6:26 AM, Jean <josor...@gmail.com> 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
>

the last line that calls scoped should be klass. my bad.


>
>
>
>> --
>> 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 rubyonrails-talk@googlegroups.com.
>> To unsubscribe from this group, send email to
>> rubyonrails-talk+unsubscr...@googlegroups.com.
>> 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
>



-- 
-------------------------------------------------------------
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to