Ruby on rails :name\u前缀对命名空间路由没有任何影响

Ruby on rails :name\u前缀对命名空间路由没有任何影响,ruby-on-rails,ruby-on-rails-3,routes,Ruby On Rails,Ruby On Rails 3,Routes,我想用一天的时间来解决这个问题 将应用程序从rails 2移动到rails 3时,我遇到了一些路由问题 我想在“namespace”方法上使用:name\u前缀选项。我可以这样做吗 我尝试过使用“范围”选项获得相同的结果,但仍然走到了死胡同 以下是示例代码及其生成的路由: namespace :blog, :name_prefix => 'admin_' do resources :contexts end scope :module => 'blog', :path_n

我想用一天的时间来解决这个问题

将应用程序从rails 2移动到rails 3时,我遇到了一些路由问题

我想在“namespace”方法上使用:name\u前缀选项。我可以这样做吗

我尝试过使用“范围”选项获得相同的结果,但仍然走到了死胡同

以下是示例代码及其生成的路由:

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_"}
很难注意到区别,但是namespace方法将其名称添加到(1)路径名,(2)路径本身(您在浏览器中看到的),以及(3)作为控制器前缀

scope方法仅添加控制器前缀


如您所见:name_前缀不会影响路径名中的任何内容-我缺少了什么

我不能100%确定我是否正确理解您,但您可能想这样做:

scope :admin do
  scope :blog do
    resources :contexts
  end
end
选项B(但没有那么好)是:

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

事实上,:name_前缀似乎已被弃用。