sharikov_d
@sharikov_d
Мне стыдно за ваши вопросы и ответы

Ransack. Как переработать параметры в семантичный URL?

Привет.

Есть один фильтр(ransack), который оставляет после фильтрации фарш из параметров
http://localhost:3000/search?utf8=%E2%9C%93&q%5Barticul_cont%5D=&q%5Bcolor_id_eq%5D=10&q%5Bcatalog_id_eq%5D=&q%5Bbrand_id_eq%5D=&q%5Bcost_gt%5D=&q%5Bcost_lt%5D=&commit=Search


подобные параметры требуется переработать в что-то вроде
http://localhost:3000/search/Nokia/Finland/plastic/black

При этом, какие-то параметры могут отсутствовать и могут получаться такие варианты:
http://localhost:3000/search/black
http://localhost:3000/search/Finland

Есть нечто подобное на SOF: stackoverflow.com/a/31807092/3258840
но там предлагается добавлять еще параметры, что увеличит длину url.

Как при этом должен выглядеть роут?
Есть ли js библиотеки для этой цели?
  • Вопрос задан
  • 238 просмотров
Решения вопроса 1
sharikov_d
@sharikov_d Автор вопроса
Мне стыдно за ваши вопросы и ответы
Один из способов решения задачи.

На стороне сервера генерируете url из всего, что находится в params[:q], передаете url как параметр в js и там подставляете вместо того, что есть

$(document).ready ->
  history.pushState('', 'New Page Title', gon.absolute_url)


# роут для фильтра
get '/search/*filter', to: 'wallpapers#search', as: 'filter'


Для передачи паременной использовал gon
Для читабельного url - frendly_id
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы