使用单数名称作为控制器和帮助程序的名称是否有任何缺点?似乎没有什么依赖于这一点。甚至看起来帮助程序不需要像对应的控制器一样在单数和复数之间做出选择,至少根据我的有限实验是这样的。这是真的吗?
使用单数名称作为控制器和帮助程序的名称是否有任何缺点?似乎没有什么依赖于这一点。甚至看起来帮助程序不需要像对应的控制器一样在单数和复数之间做出选择,至少根据我的有限实验是这样的。这是真的吗?
明确是复数形式。
控制器:
dog_controller.rb
路由(Routes):
map.resources :dogs # => blows up
map.resources :dog # is ok, but...
dogs_path # => blows up
dog_path # => ok
控制器:
dogs_controller.rb
路由:
map.resources :dogs
dogs_path # => ok
dog_path # => ok
rails generate controller --help
提供了复数示例:
Example:
`rails generate controller CreditCards open debit credit close`
CreditCards controller with URLs like /credit_cards/debit.
Controller: app/controllers/credit_cards_controller.rb
Test: test/controllers/credit_cards_controller_test.rb
Views: app/views/credit_cards/debit.html.erb [...]
Helper: app/helpers/credit_cards_helper.rb
使用复数形式的控制器名称只是一种惯例。
通常,复数名称听起来更自然(特别是对于直接与特定模型相关联的控制器:User->Users等),但您可以使用任何您想要的名称。
至于辅助函数,所有辅助函数默认情况下都可用于所有控制器,因此从技术上讲,命名辅助函数并不重要。这只是另一种惯例,即将控制器的帮助函数保存在与控制器同名的帮助程序中。
模型是单数,因为它引用单个对象,例如用户。控制器是复数,因为它是对用户集合的控制(方法)。如何命名路由完全取决于开发人员。我从未听说过用户抱怨Web请求的URL是单数还是复数。最终结果是为了维护当前和未来贡献者的共同约定,同时为最终用户提供高质量的页面显示或API请求。
你可以在Rails指南中找到非常完整的解释: http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-rails-default
config/routes.rb
中定义以下内容: resource :dashboard, :only => [:show]
DashboardController
来显示有关应用程序某些方面的摘要信息,从多个数据库表中收集信息。因此,在这里,Dashboard
不指代应用程序的任何模型,而且将控制器命名为DashboardsController
会很奇怪。config/initializers/inflections.rb
并将您不希望自动复数化的单词添加到此定义中:ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( dashboard foo bar baz )
end
articles_controller.rb
模型
article.rb
但是如果您没有相应的模型,可以使用单数控制器名称,例如:
welcome_controller.rb
当我使用单数形式的控制器名称时,我感觉更好。
使用复数形式听起来更好,如果您有一个处理单个资源(例如用户)的控制器,则仍然可以将URL命名为/user。
使用帮助程序通常不需要为每个控制器创建一个帮助程序,并且通常会有帮助程序方法可用于跨多个控制器使用,而不是将它们全部放在应用程序帮助程序中,您可以将它们放在自定义帮助程序中,例如layout_helper或任何其他良好命名的文件。