J'essaie de créer une ressource imbriquée avec un schéma d'URL suivant les instructions suivantes: "http://example.com/username/...
".Ressource imbriquée au niveau racine du chemin d'accès
Ce que j'ai actuellement est la suivante:
ActionController::Routing::Routes.draw do |map|
map.home '/', :controller => 'home'
map.resource :session
map.resources :users, :has_many => :nodes
#map.user '/:id', :controller => 'users', :action => 'show', :has_many => :nodes
map.resources :nodes, :belongs_to => :user
end
Cela se traduit par des URL comme:
http://example.local/users/username
http://example.local/users/username/nodes
Comment éviter le préfixe "utilisateurs" est au-delà de moi. Le passage d'une option "as: => ''
" à map.resources
ne fonctionne pas et il semble que les routes nommées ne prennent pas en charge les options ":has_many
" ou ":belongs_to
". Donnez votre avis sur le "map.resources :users
" et désactivez la ligne "map.user
" après qu'il semble fonctionner ... jusqu'à ce que vous atteigniez une ressource imbriquée. Ensuite, il recrache l'erreur suivante: « Pourquoi voudriez-vous faire »
undefined method `user_nodes_path' for #<ActionView::Base:0x1052c8d18>
Je sais que ce problème est venu beaucoup de fois avant et toujours rencontré réponses Franchement, Twitter le fait, Facebook le fait, et je veux le faire aussi! En ce qui concerne la critique commune sur la façon d'éviter les noms d'utilisateurs de chemins intégrés conflictuels, j'ai défini la longueur de mon nom d'utilisateur minimum à 6 caractères et prévois de faire tous les chemins de segments de chemins de niveau racine intégrés. caractères ou plus courts (par exemple "/opt/...
" pour les options, "/in/...
" pour la connexion à la session, etc.).
Brillant! Je suis assez surpris de ne pas avoir trouvé le plugin default_routing plus tôt; il ressemble à un must-have pour n'importe quel projet! Merci de votre aide! –
Je dois mentionner que si le plugin default_routing est génial, il est aussi terriblement cassé dans Rails 2.3.4 (et peut-être aussi dans les versions antérieures). Cependant, il existe une version corrigée sur http://github.com/slippyd/default_routing. –
Merci pour le lien, Slippy, votre version a parfaitement fonctionné pour moi! –