tutorial software rails ejemplos descargar curso caracteristicas ruby-on-rails

ruby-on-rails - software - ruby on rails tutorial



diferencia entre el alcance y el espacio de nombres del enrutamiento ruby-on-rails 3 (4)

La diferencia radica en las rutas generadas.

Las rutas son admin_posts_path y admin_comments_path para el espacio de nombres, mientras que son solo posts_path y comments_path para el alcance.

Puede obtener el mismo resultado que un espacio de nombres pasando la opción :name_prefix a scope.

No puedo entender cuál es la diferencia entre un espacio de nombres y un alcance en el enrutamiento de ruby-on-rails 3.

¿Podría alguien explicar por favor?

namespace "admin" do resources :posts, :comments end scope :module => "admin" do resources :posts, :comments end


Tanto el alcance como el espacio de nombres están explorando un conjunto de rutas a las opciones predeterminadas dadas.
Excepto que no hay opciones predeterminadas para el alcance , y para el espacio de nombres :path :shallow_path como :shallow_path :module :shallow_path y opciones de :shallow_prefix , todas predeterminadas para el nombre del espacio de nombres.

Las opciones disponibles para el alcance y el espacio de nombre corresponden a las de coincidencia .



ejemplos siempre me ayudan, así que aquí hay un ejemplo:

namespace :blog do resources :contexts end

nos dará las siguientes rutas:

blog_contexts GET /blog/contexts(.:format) {:action=>"index", :controller=>"blog/contexts"} POST /blog/contexts(.:format) {:action=>"create", :controller=>"blog/contexts"} new_blog_context GET /blog/contexts/new(.:format) {:action=>"new", :controller=>"blog/contexts"} edit_blog_context GET /blog/contexts/:id/edit(.:format) {:action=>"edit", :controller=>"blog/contexts"} blog_context GET /blog/contexts/:id(.:format) {:action=>"show", :controller=>"blog/contexts"} PUT /blog/contexts/:id(.:format) {:action=>"update", :controller=>"blog/contexts"} DELETE /blog/contexts/:id(.:format) {:action=>"destroy", :controller=>"blog/contexts"}

Usando alcance ...

scope :module => ''blog'' do resources :contexts end

Nos dará:

contexts GET /contexts(.:format) {:action=>"index", :controller=>"blog/contexts"} POST /contexts(.:format) {:action=>"create", :controller=>"blog/contexts"} new_context GET /contexts/new(.:format) {:action=>"new", :controller=>"blog/contexts"} edit_context GET /contexts/:id/edit(.:format) {:action=>"edit", :controller=>"blog/contexts"} context GET /contexts/:id(.:format) {:action=>"show", :controller=>"blog/contexts"} PUT /contexts/:id(.:format) {:action=>"update", :controller=>"blog/contexts"} DELETE /contexts/:id(.:format) {:action=>"destroy", :controller=>"blog/contexts"}

Aquí hay una buena lectura sobre el tema: http://edgeguides.rubyonrails.org/routing.html#controller-namespaces-and-routing