我已经编写了特定rails应用程序的管理区域,现在我已准备好将其设置为网站中的自己部分。
因此,它将是/ admin
但是,我不想把它作为/ admin在路线本身中我想要一些不常见的东西,所以我在它之前和之后添加了几个连字符。
所以路由是/ -admin- /,命名空间是Admin。
使用以下方法进行设置后:path_prefix => “/ -admin-”,我有以下代码块:
map.namespace "/-admin-/", :name_prefix => "", :path_prefix => "/-admin-" do |admin|
这适用于所有浅层路由,相反,在rake路由输出中输出为:
new_page GET /-admin-/areas/:area_id/pages/new(.:format) {:action=>"new", :controller=>"admin/pages"}
edit_admin_page GET /admin/pages/:id/edit(.:format) {:action=>"edit", :controller=>"admin/pages"}
admin_page GET /admin/pages/:id(.:format) {:action=>"show", :controller=>"admin/pages"}
PUT /admin/pages/:id(.:format) {:action=>"update", :controller=>"admin/pages"}
DELETE /admin/pages/:id(.:format) {:action=>"destroy", :controller=>"admin/pages"}
areas GET /-admin-/areas(.:format) {:action=>"index", :controller=>"admin/areas"}
POST /-admin-/areas(.:format) {:action=>"create", :controller=>"admin/areas"}
new_area GET /-admin-/areas/new(.:format) {:action=>"new", :controller=>"admin/areas"}
注意浅路由路由的前缀为/ admin /而不是/ -admin- /(与其父路由一样)。
有关如何解决此问题的任何想法?这是rails中的错误还是我需要解决它?我尝试将:path_prefix添加到每个嵌套路由但它没有做任何事情?
有什么想法吗?
答案 0 :(得分:0)
我不确定你没有使用/ admin的理由 - 通过默默无闻的安全性并不是真正的安全性 - 你应该使用像authlogic这样的东西来阻止未经授权的用户。
请尝试以下操作命名管理员控制器:
map.namespace :admin, :path_prefix => "-admin-" do |admin|
admin.resources :users
admin.resources :pages
end
示例生成的路线:
admin_users GET /-admin-/users(.:format) {:controller=>"admin/users", :action=>"index"}
答案 1 :(得分:0)
没有办法解决这个问题。事实证明,当它们被设置为浅层时,所有版本的Rails都会将URL及其资源名称分解为最低点。解决此问题的唯一方法是手动设置所有资源路由,而不使用map.resources
。