В настоящее время у меня есть это внутри моего контроллера:
@employees = Employee.all
#need to keep params different because of nested route(id) and filter form params
if !params[:employee].blank? && !params[:contact].blank?
@logs = Log.both_filters(params[:employee], params[:contact]).date_ordered
elsif params[:employee_id]
@logs = Log.by_employee(params[:employee_id]).date_ordered
elsif !params[:employee].blank?
@logs = Log.by_employee(params[:employee]).date_ordered
elsif params[:contact_id]
@logs = Log.by_contact(params[:contact_id]).date_ordered
elsif !params[:contact].blank?
@logs = Log.by_contact(params[:contact]).date_ordered
else
@logs = Log.all.date_ordered
end
end
Мне пришлось установить два разных параметра, потому что индекс также является вложенным маршрутом для сотрудников и для контактов (params [: contact_id]), а затем я Также хотел бы отличить guish загрузку от двух фильтров (params [: contact]).
Я установил параметры для фильтров в моей модели:
where(employee: employee_id)
end
def self.by_contact(contact_id)
where(contact: contact_id)
end
Это просто выглядит как много логик c в моем контроллере, и есть небольшое повторение. Я только на Ruby на Rails, пока нет JS.
Заранее спасибо!