2009-07-03 9 views
1

Comment écrire un itinéraire qui mappe un chemin comme celui-ci?Routage imbriqué

/PowerUsers/bob/article-titre

C'est ce que je suis arrivé à ce jour: Cela me donne l'itinéraire suivant

map.resources :users, :as => "powerusers" do |users| 
    users.resources :articles, :as => '' 
end 

:

/PowerUsers /: user_id //: id

Comment se débarrasser de la double backslah?/powerusers/admin // premier-article?

Cordialement. Asbjørn Morell

Répondre

4

Ok, si vous ne voulez pas la ressource imbriquée intermédiaire (/ articles), je n'utiliserais pas du tout map.resources.

Essayez:

map.connect '/powerusers/:user_id/:article_title', :controller => 'articles', :action => 'view_by_title' 
+0

:) Donne-moi: /powerusers/:user_id/admin/:id(.:format) {: controller => articles " ",: action =>" show "}:/ – atmorell

+0

Sweet :) Merci beaucoup. – atmorell

+0

Content de pouvoir aider! –

1

Si j'ajoute ...

map.resources :users, :as => "powerusers" do |users| 
    users.resources :entries, :as => 'article-title' 
    end 

Je reçois les routes ci-dessous, qui comprennent celui que vous voulez ...

(Membre suppléant "articles" pour les "entrées" pour votre situation.)

   GET /powerusers(.:format)         {:controller=>"users", :action=>"index"} 
       POST /powerusers(.:format)         {:controller=>"users", :action=>"create"} 
       GET /powerusers/new(.:format)        {:controller=>"users", :action=>"new"} 
       GET /powerusers/:id/edit(.:format)      {:controller=>"users", :action=>"edit"} 
       GET /powerusers/:id(.:format)        {:controller=>"users", :action=>"show"} 
       PUT /powerusers/:id(.:format)        {:controller=>"users", :action=>"update"} 
       DELETE /powerusers/:id(.:format)        {:controller=>"users", :action=>"destroy"} 
    user_entries GET /powerusers/:user_id/article-title(.:format)   {:controller=>"entries", :action=>"index"} 
       POST /powerusers/:user_id/article-title(.:format)   {:controller=>"entries", :action=>"create"} 
new_user_entry GET /powerusers/:user_id/article-title/new(.:format)  {:controller=>"entries", :action=>"new"} 
edit_user_entry GET /powerusers/:user_id/article-title/:id/edit(.:format) {:controller=>"entries", :action=>"edit"} 
    user_entry GET /powerusers/:user_id/article-title/:id(.:format)  {:controller=>"entries", :action=>"show"} 
       PUT /powerusers/:user_id/article-title/:id(.:format)  {:controller=>"entries", :action=>"update"} 
       DELETE /powerusers/:user_id/article-title/:id(.:format)  {:controller=>"entries", :action=>"destroy"} 
+0

Ceci est l'URL que je recherche: /powerusers/:user_id/:id(.format) Je veux cacher le nom du second contrôleur - article-titre dans votre exemple – atmorell

1

Au lieu de nicher, cela fonctionnerait-il?

Je pense que ce ne sera pas, mais un test rapide raconteraient mieux

+0

Juste essayé et le résultat est/powerusers /: user_id/articles /: id (.: format) {: controller => "articles",: action => "show"} J'essaie de me débarrasser de l'article de l'url. – atmorell

+0

Je ne fais que lancer des idées ici (pas que je sache de quoi je parle). Avez-vous essayé: as => nil au lieu de: as => ''? –

+0

np :) Jep, essayé avec: as => nil/false. – atmorell