2013-04-08 73 views
2

我想了一天来解决这一个...:name_prefix不影响对命名空间路由

移动从梁2至3轨的应用程序什么的,我遇到了一些问题与途径。

我想在'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)作为控制器前缀。

范围方法只添加一个控制器前缀。

正如你所看到的:name_prefix不影响路径名中的任何内容 - 我缺少什么?

回答

1

我不是100%肯定,如果我理解正确,但你可能想要做这样的事情:

scope :admin do 
    scope :blog do 
    resources :contexts 
    end 
end 

和选项B(但不是很好)将是:

scope :blog, :as => 'admin_blog' 
    resources :contexts 
end 
+0

确实,:name_prefix似乎不推荐使用。 – 2013-11-29 00:01:42