生成控制器时仪表板会变成仪表板吗?

时间:2013-01-25 23:28:40

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

用户控制器名为UsersController,原因很简单,因为它控制着多个用户,但实际上它不会只改变特定用户特定的几个参数吗?

因此,对我来说最合乎逻辑的事情是控制器名称Dashboard应该命名为DashboardsController,因为它控制多台PC上的多个Dashboard,并且因为渲染页面后某些特定字段略有变化,因此它应该命名为Dashboards。像用户被命名为用户而不是用户......

这让我回到了起点。我该如何决定选择什么;复数还是单数?仪表板只是应用程序中的一个特定内容,而用户并不是真正控制自己的,但是当用户名在页面上呈现时,Dashboards和用户喜欢的特定标签都会不同。

最佳做法是什么?

3 个答案:

答案 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将有多个动作,所以它又回到了多元化的想法。

我的建议坚持复数惯例。