我有模型Admin
,User
和Airport
。
我希望管理员能够访问:create
,:update
等机场,并希望用户只需:show
和:index
。但为了更好地阅读和管理路线,我希望new_airport_path
有链接
domain.com/admin/airports/new
和airports_path
domain.com/airports
我在namespace
routes.rb
namespace :admin do
resources :airports, only: [:new, :create, :edit, :update, :destroy]
end
resources :airports, only: [:show, :index]
但是,当我去new_admin_airport_path
时,我看到了
未初始化的常量Admin :: AirportsController
因此,如果我将airports_controller
移至admin
文件夹并将其重命名为Admin::AirportsController
,我将不允许用户查看该文件夹并收到错误
未初始化的恒定机场控制器
答案 0 :(得分:5)
您可以将视为错误或提示:
事实上,这是常见的做法。
如果在网站的不同部分中对同一资源(模型?)的处理方式不同,这些部分最好由单独的控制器处理,因为网站这些部分的操作可能会重叠。比方说,管理员的show
操作可能会显示一些其他信息不可见的额外信息。使用相同的控制器,您必须使用if @user.admin?
等检查来混淆视图,使用两个不同的控制器,可以轻松拥有两组不同的视图。
此外,这使访问控制变得更加容易,因为如果控制器合并,您可以将对整个控制器的访问限制为特定的一组用户(管理员),而无需指定特定操作的列表。
答案 1 :(得分:1)
您应该使用timerSeconds
:
scope