【问题标题】:'sarlLegalStatuses' is not a supported controller name“sarlLegalStatuses”不是受支持的控制器名称
【发布时间】:2018-04-27 08:36:59
【问题描述】:

我在使用名为 sarlLegalSatuses 的资源的驼峰版本时遇到以下错误

这是我得到的错误:

in check_controller_and_action': 'sarlLegalStatuses' is not a supported controller name. This can lead to potential routing problems.

我的路线:

ils.application.routes.draw do
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
  root 'sarlLegalStatuses#new'

  resources :sarlLegalStatuses
end

使用蛇形案例解决了这个问题,但是随着我在代码中的进一步深入,这开始很烦人。我注意到人们对以“s”结尾的复数形式的单词有问题,所以我添加了以下变形但没有成功,如你所见:

动作

veSupport::Inflector.inflections(:en) do |inflect|
  #   inflect.acronym 'RESTful'
  inflect.uncountable %w(sarl legal)
  inflect.irregular 'status', 'statuses'
end

怎么了?

【问题讨论】:

  • 你为什么要这样做?你为什么不遵守约定?
  • 你能说得更具体些吗,因为我不明白我是怎么不遵守约定的?我正在尝试遵循约定,这就是为什么我不想在我的代码中使用蛇形案例。
  • 路由中的sarlLegalStatuses 应该是sarl_legal_statuses 并且你的控制器名称应该是sarl_legal_statuses_controller.rb
  • 只需使用蛇形外壳,就像 Rails 约定 告诉您:root 'sarl_legal_statuses#new', resources :sarl_legal_statuses
  • 所以我的问题似乎更像是:“为什么您更喜欢根据您自己的权利的约定,而不是完善并依赖于 Ruby on Rails 框架约定?”

标签: ruby-on-rails ruby-on-rails-5 rails-routing


【解决方案1】:

这里的错误是你试图违背 Ruby on Rails 约定。坚持 RoR 约定,在您的路线中使用蛇形案例:

root 'sarl_legal_statuses#new'
resources :sarl_legal_statuses

你会没事的。更重要的是,代码对于以后可能进入项目的人会更加友好。所以骆驼案的实验是完全没有意义的。

【讨论】:

  • 我认为 camelCase 是约定俗成的,因为我没有看到该信息的任何痕迹,并且通常用于文件名的 snake_case
【解决方案2】:

显然,您必须在代码中对您的控制器名称进行蛇皮化处理,请参阅routing-for-controllers-with-multiple-words-in-in-rails-4 on stakoverflow,但我一直在阅读大量指南和命名约定,我似乎他们从未提及这一点(使用哪种情况)所以我猜我只需要接受评论者的话。

【讨论】:

  • 嗯,很奇怪。我怀疑例如 Rails 指南 (guides.rubyonrails.org/routing.html) 建议在路线中使用驼峰式大小写。
  • 我没这么说,但我会编辑以使其更清晰
  • 事实上,我只是在您指出的指南中搜索了“案例”一词,100% 确定。没有关于使用哪种情况的信息。
  • 而且他们在本指南中总是使用单数词控制器,所以我现在明白你的意思了。
  • 我现在正在做一个拉取请求以更新指南
猜你喜欢
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
  • 2012-11-13
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 2022-11-30
相关资源
最近更新 更多