由于我正在学习更多关于rails的知识,并且从ASP.Net时代开始思考我的设计思想,我今天早上正在考虑一个场景,但不知道是否可以这样做。
从业者通过服务获得许多治疗 - 反之亦然
在我的控制面板中,我有一个区域供从业者编辑他们的详细信息(姓名,联系信息等),也可以通过复选框选择他们的治疗方法。
我想从Practitioners _form中删除复选框。有自己的形式,我可以这样打电话:
<%= link_to "Edit Treatments", edit_practitioner_treatments(@practitioner) %>
然而,从管理的角度来看,我仍然需要能够在没有实践对象的情况下管理治疗:
<%= link_to "Edit Treatments", edit_treatments(@treatment) %>
也有认证障碍。
答案 0 :(得分:3)
通常在考虑管理功能时,管理功能通常会向用户提供一个完全不同的界面,通过权限检查更多地基于“这会破坏某些东西”而不是“应该允许”,创建一个带有单独控制器的管理区域是有利的。例如:
map.namespace :admin do |admin|
# Admin::PracticionersController
map.resources :practicioners
# Admin::TreatmentsController
map.resources :treatments
end
map.resources :practicioners do |practicioner|
practicioner.resources :treatments
end
map.resources :treatments do |treatment|
treatment.resources :practicioners
end
所有Admin :: *控制器都可以继承Admin :: BaseController之类的东西,它允许执行足够严格的身份验证检查,然后才允许执行任何操作。
在我见过的大多数应用程序中,面向用户的前端都有一个设计或风格元素,它们的布局经常被导航元素,广告或其他编辑内容包围。创建一个整洁的单独管理视图,每页显示更多信息,并允许排序或搜索未暴露给用户的维度,这对于管理中等大小的数据集非常有价值。
虽然制作这些额外的管理控制器及其相关表单似乎需要做很多工作,但如果您在设计中小心,可以在两个区域之间回收大量功能,尤其是页面部分。