:conditions => ['body LIKE?' AND 'title LIKE?', "%#{search}%"]
Try fixing the condition clause to:
:conditions => ['body LIKE ? AND title LIKE ?', "%#{search}%", "%#
{search}%" ]
You are passing an array containing the SQL "WHERE" clause in a
template. Each '?' is a placeholder for the variables following the
initial string containing the condition. For every '?' in the clause
there has to be a corresponding variable to be inserted. Your original
had two placeholders and only one variable. Placeholders show where
the corresponding variables will be inserted. In your code the
variable would have been inserted as a run-on to the "LIKE" which SQL
would have complained about because it would have been a syntax error.
The 'AND' is a boolean in the SQL statement and has to be part of it.
Ruby was getting confused by your original statement because the "AND"
was outside the single-quotes and thought you were ANDing two strings.