Как создать URL-адреса сортировки в Rails?

#ruby-on-rails #sorting #query-string

#ruby-on-rails #сортировка #строка запроса

Вопрос:

Я работаю над индексной страницей контроллера листинга, которому требуется несколько параметров сортировки. Строка запроса необходима для определения опции сортировки, которая активна для текущей страницы. Я использовал обходной путь для этой проблемы, жестко закодировав строку запроса в ссылки сортировки:

 =link_to "Lowest Price","/listings?sort_by=priceamp;order=asc", :class=>"#{'active' if request.query_string =~ /sort_by=priceamp;order=asc/ }"
  

Но с этим связаны две проблемы. Во-первых, это слишком хрупко. Во-вторых, он не поддерживает поисковый запрос или какие-либо другие параметры — в противном случае он ломается.

Что мне нужно, так это способ изменить параметры сортировки, не предполагая, что строка запроса останется неизменной…

Не уверен, существует ли лучшая практика для этого. Я иду по долгому пути и просто добавляю помощников для преобразования URL в хэш, хэш в URL, и я все еще не знаю, что делать с проблемой активной ссылки. На все это может потребоваться некоторое время.

Любые предложения будут оценены.

Ответ №1:

Вы можете сделать это, предоставив пары ключ / значение любому помощнику URL. Например:

 listings_url(:sort_by => "asc", :order => "asc")
  

Комментарии:

1. Отлично! Пожалуйста, отметьте это как ответ, если считаете его адекватным 🙂

2. Я пытался ранее, но, по-видимому, должно пройти 10 минут, прежде чем вы сможете принять ответ как правильный.