我在我的应用程序中添加了一个 Admin 命名空间,所以当登录到管理区域时,它必须是这样的:admin/websites 和 admin/page/8
所以这就是我在 routes.rb 中的内容
namespace :admin do |admin|
match '/' => 'dashboard#index'
resources :websites
resources :pages
resources :sessions
get 'login' => 'sessions#new', :as => 'login'
get 'logout' => 'sessions#destroy', :as => 'logout'
end
我在 app/controllers 目录中有 admin_controller.rb。
class Admin::BaseController < ApplicationController
protect_from_forgery
include UrlHelper
...
我在 app/controllers 中创建了一个管理目录。所以我在 app/controllers/admin/websites_controller.rb 里面有这个
class Admin::WebsitesController < ApplicationController
其他一些答案建议使用 class Admin::WebsitesController < Admin::BaseController,但这对我来说从未奏效。如果我错了,请告诉我。
那么在我的布局文件 (app/views/layouts/application.html.erb) 中,我有这样的链接
edit_admin_website_path(@website)
给我路由错误 Routing Error No route matches {:action=>"edit", :controller=>"admin/websites"}
为什么?! :(
最佳答案
添加名为 的文件application_controller.rb 在具有此内容的 admin 目录中:
class Admin::ApplicationController < ApplicationController
end
然后,对于此目录中的每个 Controller ,扩展 Admin::ApplicationController 类。
你试过这个吗?
admin_edit_website_path(@website)
关于ruby-on-rails - 添加 Admin 命名空间时的路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7571780/