Я хочу написать метод, который перебирает все параметры, чтобы убедиться, что они не все пустые.
Мои параметры:
params[:search][:company]
params[:search][:phone]
params[:search][:city]
params[:search][:state]
params[:search][:email]
У меня есть этот метод:
def all_blank_check(params)
array=[]
params[:search].each do |key, value|
array << value unless value.blank?
end
if array.count < 1
return true
else
return false
end
end
Но когда я пытаюсь что-то типа all_blank_check(params)
, я получаю следующую ошибку:
NoMethodError (undefined method `all_blank_check' for #<Class:0x108c08830>):
Нужно ли сначала преобразовывать параметры в массив?Не могу ли я выполнить метод для параметров?
Правка - полный источник:
def index
@customers = Customer.search_search(params)
end</p>
<code> def self.search_search(params)
search_field = []
search_values = []
array = []
test = ''
if !params[:search].nil? && all_blank_check(params[:search]
if !params[:search].nil? && !params[:search][:company].blank?
search_field << 'customers.company LIKE ?'
search_values << "%#{params[:search][:company]}%"
end
if !params[:search].nil? && !params[:search][:city].blank?
search_field << 'customers.city = ?'
search_values << "#{params[:search][:city]}"
end
if !params[:search].nil? && !params[:search][:phone].blank?
search_field << 'customers.phone_1 = ?'
search_values << "%#{params[:search][:phone]}%"
end
conditions = [search_field.join(' AND ')] + search_values
Customer.where(conditions).includes(:customer_contacts).limit(10)
end
end
def all_blank_check(params)
params[:search].each do |key, value|
array << value unless value.blank?
end
if array.count < 1
return false
end
if array.count > 1
return true
end
end
</code>