Step.05 後台的controller - Azraeil/JCcart_Note GitHub Wiki

建立dashboard、admin這兩個資料夾

create app/controllers/dashboard/admin

現在我們要一邊看routes.rb一邊來建我們的controllers


### dashboard_controller

create app/controllers/dashboard/dashboard_controller.rb

一開始先建立

class Dashboard::DashboardController < ApplicationController

end

現在來解釋這段,我們可以先下cmd + p找到application_controller.rb。

class ApplicationController < ActionController::Base

我們可以看到application_controller.rb是繼承自ActionController::Base

如果不想被ApplicationController所影響,可以直接繼承ActionController::Base。

為了享有ApplicationController的便利,我們繼承ApplicationController。

這層叫dashboard,所以一開始打dashboard的namespace

Dashboard:: < ApplicationController

再來是dashboard_controller.rb他的全名

Dashboard::DashboardController < ApplicationController

接著我們去devise GitHub,看到Controller filters and helpers,於是我們在dashboard_controller.rb加上

before_action :authenticate_user!

接下來所有繼承Dashboard::DashboardController就不用寫這行,這是他的好處


### orders_controller

create app/controllers/dashboard/orders_controller.rb

在此,我們就能繼承剛剛的Dashboard::DashboardController

class Dashboard::OrdersController < Dashboard::DashboardController

end

### admin_controller

create app/controllers/dashboard/admin/admin_controller.rb

這一次,我們在namespace :admin這一層,而namespace :admin又在namespace :dashboard裡面,所以跟dashboard_controller一樣的概念,我們繼承自ApplicationController

class Dashboard::Admin::AdminController < ApplicationController

end

一樣驗證,是否有manager進去

before_action :authenticate_manager!

### items_controller

create app/controllers/dashboard/admin/items_controller.rb

class Dashboard::Admin::ItemsController < Dashboard::Admin::AdminController

end



以下JC沒打,我就自己先打出來了


#### cates_controller

create app/controllers/dashboard/admin/cates_controller.rb

class Dashboard::Admin::CatesController < Dashboard::Admin::AdminController

end

#### cates_controller

create app/controllers/dashboard/admin/cates_controller.rb

class Dashboard::Admin::CatesController < Dashboard::Admin::AdminController

end

#### orders_controller

create app/controllers/dashboard/admin/orders_controller.rb

class Dashboard::Admin::OrdersController < Dashboard::Admin::AdminController

end

#### users_controller

create app/controllers/dashboard/admin/users_controller.rb

class Dashboard::Admin::UsersController < Dashboard::Admin::AdminController

end

#### managers_controller

create app/controllers/dashboard/admin/managers_controller.rb

class Dashboard::Admin::ManagersController < Dashboard::Admin::AdminController

end
⚠️ **GitHub.com Fallback** ⚠️