用户控制器名为UsersController,原因很简单,因为它控制着多个用户,但实际上它不会只改变特定用户特定的几个参数吗?
因此,对我来说最合乎逻辑的事情是控制器名称Dashboard应该命名为DashboardsController,因为它控制多台PC上的多个Dashboard,并且因为渲染页面后某些特定字段略有变化,因此它应该命名为Dashboards。像用户被命名为用户而不是用户......
这让我回到了起点。我该如何决定选择什么;复数还是单数?仪表板只是应用程序中的一个特定内容,而用户并不是真正控制自己的,但是当用户名在页面上呈现时,Dashboards和用户喜欢的特定标签都会不同。
最佳做法是什么?
答案 0 :(得分:3)
我倾向于使用演示者模式进行仪表板。仪表板是对象的混合体,很难将其视为节目或索引页面。我将创建一个虚拟对象来处理关联对象的查询和聚合。它确实清理了控制器代码,即使你决定使用DashboardsController。
但是,我建议在路由中添加resources.users。
collection do
get :dashboard
end
然后在UsersController下添加一个动作仪表板
def dashboard
@presenter = UserDashboardPresenter.new(user)
end
在视图中使用@presenter。
如果搜索,您可以在演示者模式上找到更多信息。它非常适合缓存,代码重用,测试和性能增强。
答案 1 :(得分:2)
rails约定是使用复数(例如/仪表板)定义控制器名称。这不是一成不变的,您可以根据自己的需要进行更改,但如果您问的是最佳做法是什么,那么最好的办法是坚持使用rails惯例,特别是如果您刚开始使用用铁轨。它会让你的生活更加简单。
如果您真的想为控制器使用单数术语(例如/ dashboard),可以在routes.rb文件中指定(假设您使用RESTful路由并将仪表板定义为资源)
resource :dashboard, :controller => 'dashboard'
另请注意,如果您决定使用单数,则需要调整rails为RESTful路由创建的辅助方法,因此
dashboards_path # will no longer work, you must use
dashboard_path
答案 2 :(得分:1)
对控制器使用多个名称只是Rails惯例之一。你是否应该偏离惯例?我认为如果坚持下去会更好。
正如您提到的用户,多个名称通常听起来更自然。我确信你的DashboardsController将有多个动作,所以它又回到了多元化的想法。
我的建议坚持复数惯例。