对控制器和助手使用单数名称有什么缺点吗?似乎没有什么依赖于这一点。根据我有限的实验,似乎助手们不必像对应的控制器那样,对单数和复数做出相同的选择。是真的吗?
Using plural names for controllers is just a convention.
Plural names usually sound more natural (especially for controllers that are tied directly to a specific model: User -> Users, etc.), but you can use whatever you want.
至于帮助器,默认情况下所有控制器都可以使用所有帮助器,因此从技术上讲,如何命名帮助器并不重要。将控制器的 helper 函数保存在与控制器同名的 helper 中,这只是另一种约定。
使用复数形式听起来更好,如果您有一个控制器来处理单个资源(即 user) ,那么您仍然可以命名 url/user。
使用 helper 通常不需要为每个控制器都配置一个 helper 方法,而且通常会有一些 helper 方法,你可以使用 ascors 多个控制器,而不是将它们全部丢弃在你的应用程序 helper 中,你可以将它们放入自定义的 helper 中,而不是像 outs _ helper 或任何其他命名良好的文件中。
当我使用单数形式作为控制器名称时,我感觉好多了
Model 是单数的,因为它引用一个对象,比如 User。控制器是复数形式的,因为它是用户集合的控件(方法)。如何命名路线完全取决于每个开发人员。从来没有用户抱怨过网页请求的 URL 是单数或复数。为当前和未来的贡献者维护公共约定的最终结果,同时为最终用户提供高质量的页面显示或 API 请求。
绝对是 不止一个。
总监:
dog_controller.rb
路线:
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有多个例子:
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
您在 Rails 指南中有一个非常完整的解释: Http://edgeguides.rubyonrails.org/routing.html#resource-routing-the-rails-default
一个控制器处理一个模型是 Rails 的约定,无论该模型的一个或多个实例是否可以在运行时存在。但是,您可以拥有一个 Rails 应用程序,其中(一些)控制器(和相关的视图)不与任何特定的模型相关联,而是处理一组更复杂的功能。在这种情况下,自动复数没有任何意义。
我目前正在开发的 Rails 应用程序就属于这一类,Rails 希望我定义为单数的标识符在其他地方以复数形式使用,这简直让我恼火。例如,我可能想在 config/routes.rb中定义类似的内容:
config/routes.rb
resource :dashboard, :only => [:show]
然后我需要一个控制器 DashboardController来显示关于应用程序某些方面的摘要信息,从多个数据库表中收集信息。所以在这里,Dashboard并没有引用应用程序的任何模型,如果控制器的名字是 DashboardsController,那将是非常奇怪的。
DashboardController
Dashboard
DashboardsController
我找到了一个很好的解决办法,刺激自动多元化在 这个答案。简而言之,编辑文件 config/initializers/inflections.rb并添加你不想被自动复数化的单词到这个定义:
config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect| inflect.uncountable %w( dashboard foo bar baz ) end
If the controller is a resource then it must be plural...
比如说
控制员
articles_controller.rb
模特
article.rb
但是,当您没有相应的模型时,可以使用单数控制器名称,如
welcome_controller.rb
控制器名称中最后一个单词的变数命名原则。
例如,ClientsController优于 ClientController,SiteAdminsController优于 SiteAdminController 或 SitesAdminsController,等等。
ClientsController
ClientController
SiteAdminsController
SiteAdminControlle
SitesAdminsController
遵循此约定将允许您使用默认的路由生成器(如资源等) ,而无需限定每个 :path或 :controller,并将保持 URL 和路径助手的使用在整个应用程序一致。
:path
:controller
档号: 控制器命名约定-Rails 文档