我有一个插页式控制器操作,可根据管理员的角色属性重新路由管理员。根据角色类型,管理员将被定向到同一控制器中的 4 个操作之一(或一个 catch 操作)。这很好用,因为在每种情况下,每个动作都只有一个视图。但我想将视图分成 10 个不同的页面,我不确定如何构建控制器。
如果将这 4 个案例拆分到不同的控制器中,每个案例将具有相同的 10 个操作,并且信息会有所不同,信息量会因角色而异,变量之类的内容也会略有不同。
我应该将每个移出到它自己的控制器并使用 dashboard#index 将它们路由到那里吗?我是否必须运行rails g controller dashboard/free
等以将 4 个仪表板控制器添加到它们自己的子文件夹中,或者是否有更明智的方法来在架构上处理它?
路线
match "/dashboard/index" => 'dashboard#index'
match "/dashboard/free" => 'dashboard#free', :as => :dashboard_free
match "/dashboard/standard" => 'dashboard#standard', :as => :dashboard_standard
match "/dashboard/premium" => 'dashboard#premium', :as => :dashboard_premium
match "/dashboard/super" => 'dashboard#super', :as => :dashboard_super
执行重定向的仪表板控制器
def index
path = case current_admin.role
when 'free'
dashboard_free_path
when 'standard'
dashboard_standard_path
when 'premium'
dashboard_premium_path
when 'super'
dashboard_super_path
else
no_access_path
end
redirect_to path
end