Je ne comprends pas quelle est la différence entre un espace de noms et une portée dans le routage de ruby-on-rails 3.
Quelqu'un pourrait-il expliquer?
namespace "admin" do
resources :posts, :comments
end
scope :module => "admin" do
resources :posts, :comments
end
ruby-on-rails
never_had_a_name
la source
la source
les exemples m'aident toujours, alors voici un exemple:
nous donnera les itinéraires suivants:
Utilisation de la portée ...
Nous donnera:
Voici quelques bonnes lectures sur le sujet: http://edgeguides.rubyonrails.org/routing.html#controller-namespaces-and-routing
la source
du guide des rails
"La portée de l'espace de noms ajoutera automatiquement
:as
ainsi que les préfixes:module
et:path
."alors
est le même que
la source
L' étendue et l' espace de noms couvrent un ensemble de routes vers les options par défaut données.
Sauf qu'il n'y a pas d' options par défaut pour la portée et de l' espace de noms
:path
,:as
,:module
,:shallow_path
et les:shallow_prefix
options par défaut tout au nom de l'espace de noms.Les options disponibles pour la portée et l' espace de noms correspondent à celles de match .
la source
scope est un peu complexe, mais fournit plus d'options pour affiner exactement ce que vous voulez faire.
scope prend en charge trois options: module, path et as . Si vous voyez la portée avec toutes ses options, ce sera exactement la même chose que l'espace de noms.
En d'autres termes, les itinéraires générés par
est le même que
En d'autres termes, nous pouvons dire qu'il n'y a pas d'options par défaut pour la portée par rapport à l'espace de noms. namespace ajoute toutes ces options par défaut. Ainsi, en utilisant la portée, nous pouvons affiner les routes selon les besoins.
Si vous examinez en profondeur le comportement par défaut de la portée et de l' espace de noms , vous constaterez que la portée par défaut ne prend en charge que : l' option de chemin , où l' espace de noms prend en charge trois modules d' options , le chemin et comme par défaut.
Pour plus d'informations, veuillez consulter un doc namespace-and-routing .
la source