Пользователь хочет выполнить поиск по атрибуту и / или заказать результаты. Вот несколько примеров запросовЗапрос модели Rails с множеством необязательных параметров
/posts?order=DESC&title=cooking
/posts?order=ASC
/posts?title=cooking
Как я могу условно связать такие параметры, чтобы сформировать запрос?
До сих пор у меня очень уродливый метод, который быстро станет трудно поддерживать.
def index
common = Hash.new
common["user_id"] = current_user.id
if params[:order] && params[:title]
@vacancies = Post.where(common)
.where("LOWER(title) LIKE ?", params[:title])
.order("title #{params[:order]}")
elsif params[:order] && !params[:title]
@vacancies = Post.where(common)
.order("title #{params[:order]}")
elsif params[:title] && !params[:order]
@vacancies = Post.where(common)
.where("LOWER(title) LIKE ?", params[:title])
end
end
Отличный ответ. Одна маленькая вещь, пришлось преобразовать «порядок» в символ, чтобы заставить это работать: 'params [: order] .to_sym'. Только ошибка: asc и: desc были приняты указания. – frostbite
Хороший улов. Я обновил свой ответ. –