我试图在Rails 4中创建这个控制器:
Admin::EDMsController
在我的initializers / inflections.rb文件中,我定义了首字母缩略词:
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'EDMs'
inflect.acronym 'EDM'
end
我的routes.rb文件有:
namespace :admin do
# ... some other resources ...
resources :edms
end
我的控制器在app / controllers / admin / edms_controller.rb中定义如下:
class Admin::EDMsController < Admin::AdminController
end
当我尝试访问/ admin / edms时,出现以下错误:
uninitialized constant Admin::EDMsController
到目前为止我发现了:
还值得注意的是,我在admin命名空间中有其他控制器和资源可以正常工作。
所以看起来我可以有一个首字母缩略词控制器,或命名空间中的控制器,但不是两者都有。
有什么建议吗?
答案 0 :(得分:6)
看起来这是4.2中修复的错误:https://github.com/rails/rails/pull/14146
如果你无法升级,这应该有效:
irb(main):001:0> ActiveSupport::Inflector.inflections(:en) { |inflect| inflect.acronym 'Admin/EDMs' }
=> /Admin\/EDMs/
irb(main):002:0> 'Admin::EDMsController'.underscore
=> "admin/edms_controller"
答案 1 :(得分:0)
我发现使用irregular
效果很好,因为它会强制某些起始词直接转换为结果。
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'delta', 'deltas'
end