@search = Policy.scoped
@search = @search.where('num_policy LIKE ?', params[:num_policy]) if params[:num_policy].present?
@search = @search.where('type_id LIKE ?', params[:type_id]) if params[:type_id].present?
@search = @search.where('doc LIKE ?', params[:doc]) if params[:doc].present?
@search = @search.where('name LIKE ?', params[:name]) if params[:name].present?
@policies = @search.paginate(page: params[:page], per_page: 2)
BTW: The issue is because you are creating @search inside the if statements so if no params exists then @search does not exists.
This is the rails 2 version:
conditions_str = []
conditions_values = {}
['num_policy', 'type_id', 'doc', 'name'].each do |cond|
if params[cond.to_sym].present?
conditions_str << "#{cond} LIKE :#{cond}"
conditions_values[cond.to_sym] = params[cond.to_sym]
end
end
@policies = Policy.find(:all, :conditions => [conditions_str.join(" AND "), conditions_values])