2009-11-04 4 views
4

J'ai la configuration suivante:routage Rails avec la date et a beaucoup

map.resources :articles 
map.resources :users, :has_many => [:articles] 

Ce qui est bien que je peux faire/utilisateurs/2/articles pour obtenir une liste des articles par un utilisateur donné.

J'ai aussi une configuration de la route à faire:

map.connect 'articles/month/:month/:year', :controller => 'articles', :action => 'index' 

Ce qui fonctionne pour trouver tous les articles pour un mois donné et une année donnée.

Ce que je veux faire maintenant, c'est montrer des articles par un utilisateur donné pour un mois et une année donnés.

Peut-être une URL comme:/utilisateurs/2/articles/mois/4/2009

Y at-il une belle façon de le faire? Merci

Répondre

2
map.resources :user do |user| 
    user.connect 'articles/:month/:year', :controller => 'articles' 
end 
+0

C'est certianly mieux, merci – sebastyuiop

1

Je ne tends pas à utiliser le routage à base de ressources, donc dans mon esprit ce qui suit devrait fonctionner

map.connect 'users/articles/:user_id/:month/:year', :controller => 'users', :action => 'articles', :user_id => 0, :month => Time.now.strftime("%m"), :year => Time.now.strftime("%Y") 

cela devrait permettre une url de /users/articles/2/11/2009 et fournit le mois en cours et l'année comme valeurs par défaut en cas vous souhaitez utiliser /users/articles/2 comme URL de base et fournir un mois ou une année en tant que figurants lorsque vous souhaitez être plus précis.

Il serait route vers le contrôleur 'utilisateurs et de l'action « articles » avec les autres valeurs en tant que paramètres dans les params [] hachage

En outre, vous devriez être en mesure de changer l'ordre de la connecter à:

map.connect 'users/:user_id/articles/:month/:year' 

gardant le reste même pour obtenir l'URL à: /users/2/articles/11/2009

+0

Je suis allé avec map.connect 'utilisateurs /: user_id/articles /: mois /: année' qui fonctionne très bien . Merci – sebastyuiop