Si vous n'ajoutez pas une valeur aux paramètres que vous ne respecterait la norme W3C, qui exige que la section params a la forme field=value
.
Je vous recommande d'ajouter une nouvelle action: most_popular à votre contrôleur d'articles.
Sur votre routes.rb:
map.resources :articles, :collection => {:most_popular=>:get}
Sur votre contrôleur:
class ArticlesController < ApplicationController
...
def most_popular
@articles = ...
end
Sur votre point de vue:
link_to most_popular_articles_path() # /articles/most_popular
Ce sera HTML conforme, vos urls regarderont pratiquement le même (en changeant un? par un /) et votre contrôleur sera simplifié (vous aurez l'action la plus d de l'index).
Cordialement!
Mise à jour (2017): Il semble que la norme W3C n'impose pas la syntaxe field=value
(ou ne l'exige plus). Cependant, certains serveurs sont documentés pour "étouffer" sur les requêtes ne respectant pas cette syntaxe. Voir Is a url query parameter valid if it has no value? pour plus de détails.
Je code exactement comme ça. Cependant j'ai commencé à refactoriser mon code ces derniers temps et je me demande comment RESTFUL et/ou recoomoended cette approche. N'est pas le "plus populaire" plutôt un filtre assentiel à indexer, donc plutôt une option de requête (filter = most_popular) – gorn
Restful ne signifie pas seulement CRUD. Cela signifie que chaque URL peut être considérée comme une ressource. La question est: les articles les plus populaires sont-ils suffisamment différents des articles habituels pour mériter leur propre ressource? La réponse n'est pas "je dois avoir CRUD". C'est "ça dépend de l'application". Si elles ne sont pas très importantes, ajouter un filtre filter serait suffisant. Si elles étaient super importantes, elles mériteraient probablement leur propre contrôleur. Ma solution est intermédiaire. – kikito
Oui, c'est très perspicace. Merci gorn – gorn