使用型号名称中的大写字母覆盖Rails控制器路由

rwb*_*rwb 12 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我想在rails中创建一个模型:

rails generate model ABCThing
Run Code Online (Sandbox Code Playgroud)

所以这将创建一个表,abc_things.大.问题出在控制器和路由上.我希望我的控制器是:

class ABCThingsController < ApplicationController
end
Run Code Online (Sandbox Code Playgroud)

但是,加入之后 routes.rb

resources :abc_things, :only => [:index]
Run Code Online (Sandbox Code Playgroud)

并创建相应的index视图,我在浏览器中收到以下错误:

Expected /app/controllers/abc_things_controller.rb to define AbcThingsController
Run Code Online (Sandbox Code Playgroud)

问题很容易看到("ABCThings".tableize.classify => "AbcThing"),但我不太确定如何解决它.我想覆盖从视图到控制器的rails默认路由,但我不知道如何.

将不胜感激任何帮助(以及更好的问题标题的建议!)

Tyr*_*son 17

在尝试了上述所有解决方案后,我遇到了这个问题; 能够使用变形器修复我的问题.

在我的情况下,问题TLA::ThingsController是正在解决的问题Tla::ThingsController

将以下内容放入我的初始化文件夹中修复它

config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym 'TLA'
end
Run Code Online (Sandbox Code Playgroud)