ruby-on-rails - Rails 4 - 命名空间内的首字母缩写词 Controller 给出 'Uninitialized Constant' 错误

标签 ruby-on-rails ruby ruby-on-rails-4

我正在尝试在 Rails 4 中创建这个 Controller :

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

而我的 Controller 在app/controllers/admin/edms_controller.rb中定义如下:

class Admin::EDMsController < Admin::AdminController
end

当我尝试访问/admin/edms 时,出现以下错误:

uninitialized constant Admin::EDMsController

到目前为止我发现了什么:

  • 如果我将它重命名为 Admin::EdmsController 并删除词形变化定义(即除了首字母缩略词之外一切都一样),它会起作用
  • 如果我将整个东西从 admin 命名空间移到我的应用程序的根目录(即 EDMsController,通过/edms 访问),它会起作用

还值得注意的是,我在 admin 命名空间中还有其他 Controller 和资源可以正常工作。

所以看起来我可以有一个首字母缩略词 Controller ,或者一个 namespace 内的 Controller ,但不能同时有两个。

有什么建议吗?

最佳答案

看起来这是一个在 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"

关于ruby-on-rails - Rails 4 - 命名空间内的首字母缩写词 Controller 给出 'Uninitialized Constant' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565516/

相关文章:

javascript - 如何在 Controller (Rails)中重定向后执行JS?

ruby-on-rails - 如何在在线商店应用程序中为 "products"建模

ruby-on-rails - vim/macvim : locate where a method/symbol is defined

javascript - 具有 javascript 依赖关系的 Rails gem

ruby-on-rails - 如何解决 NotIdentifiedByImageMagickError?

ruby-on-rails - 如何在rails中为options_from_collection_for_select添加数据属性

html - Rails 上的 SASS 无效 CSS 错误

ruby - 连接 Ruby 变量

ruby-on-rails - 每次更新数据库中的列时如何重新加载图表以显示更新的数据

ruby-on-rails - 在管理 Gem Rails 中设置管理员