我正在尝试一天来解决这个问题...
将应用程序从 rails 2 移动到 rails 3,我遇到了 Routes 的一些问题。
我想在 'namespace' 方法上使用 :name_prefix 选项。我可以这样做吗?
我尝试使用“范围”选项获得相同的结果,但仍然走到了死胡同。
这是一个示例代码及其产生的路线:
namespace :blog, :name_prefix => 'admin_' do
resources :contexts
end
scope :module => 'blog', :path_name_prefix => 'admin_' do
resources :contexts
end
耙路线:
blog_contexts GET /blog/contexts(.:format) blog/contexts#index {:name_prefix=>"admin_"}
POST /blog/contexts(.:format) blog/contexts#create {:name_prefix=>"admin_"} new_blog_context GET /blog/contexts/new(.:format) blog/contexts#new {:name_prefix=>"admin_"} edit_blog_context GET /blog/contexts/:id/edit(.:format) blog/contexts#edit {:name_prefix=>"admin_"}
blog_context GET /blog/contexts/:id(.:format) blog/contexts#show {:name_prefix=>"admin_"}
PUT /blog/contexts/:id(.:format) blog/contexts#update {:name_prefix=>"admin_"}
DELETE /blog/contexts/:id(.:format) blog/contexts#destroy {:name_prefix=>"admin_"}
contexts GET /contexts(.:format) blog/contexts#index {:path_name_prefix=>"admin_"}
POST /contexts(.:format) blog/contexts#create {:path_name_prefix=>"admin_"} new_context GET
/contexts/new(.:format) blog/contexts#new {:path_name_prefix=>"admin_"} edit_context GET /contexts/:id/edit(.:format) blog/contexts#edit {:path_name_prefix=>"admin_"} context GET /contexts/:id(.:format) blog/contexts#show {:path_name_prefix=>"admin_"}
PUT /contexts/:id(.:format) blog/contexts#update {:path_name_prefix=>"admin_"}
DELETE /contexts/:id(.:format) blog/contexts#destroy {:path_name_prefix=>"admin_"}
很难注意到差异,但命名空间方法将其名称添加到 (1) 路径名,(2) 路径本身 - 您在浏览器中看到的内容,以及 (3) 作为控制器前缀。
scope 方法只添加一个控制器前缀。
如您所见, :name_prefix 不会影响路径名中的任何内容 - 我错过了什么?