2013-04-08 71 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