Если вы не добавить значение параметров не будет уважая W3C стандарт, который предусматривает, что секция PARAMS имеет вид field=value
.
Я рекомендую вам вместо этого добавить новое: most_popular действие к вашему контроллеру статей.
На вашем routes.rb:
map.resources :articles, :collection => {:most_popular=>:get}
На контроллере:
class ArticlesController < ApplicationController
...
def most_popular
@articles = ...
end
На ваших просмотров:
link_to most_popular_articles_path() # /articles/most_popular
Это будет HTML-совместимый, ваши адреса будут выглядеть практически одно и то же (изменение одного на единицу /), и ваш контроллер будет упрощен (у вас будет самое_популярное действие отдельно d из индекса).
С уважением!
Update (2017): Похоже, что стандарт W3C не предписывает синтаксис field=value
(или не санкционировать его больше). Однако некоторые серверы документируются, чтобы «задушить» запросы, не соответствующие этому синтаксису. См. Is a url query parameter valid if it has no value?.
Я делаю код именно так. Однако в последнее время я начал реорганизовывать свой код и задаюсь вопросом, как RESTFUL и/или recoomoended ему этот подход. Разве это не «самый популярный», а скорее фильтр для индекса, поэтому опция запроса (filter = most_popular) – gorn
Restful не означает CRUD-only. Это означает, что каждый URL-адрес может быть ресурсом. Вопрос в том, являются ли самые популярные статьи достаточно разными от обычных статей, чтобы заслужить свой собственный ресурс? Ответ не в том, «у меня должен быть CRUD». Это «это зависит от приложения». Если они не очень важны, добавление параметра фильтра будет достаточно. Если бы они были очень важны, они, вероятно, заслуживали бы своего собственного контролера. Мое решение является промежуточным. – kikito
Да, это очень проницательно. Спасибо gorn – gorn