我可以使用像'EC'这样的rails4路由的资本模块名称吗?

时间:2014-08-10 01:36:07

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

我想使用EC模块的控制器,如EC::HomeController

# app/cotrollers/ec/home_controller.rb

class EC::HomeController < ApplicationController
  def index
  end
end

它适用于rails控制台。

[1] pry(main)> EC::HomeController
=> EC::HomeController

但在routes.rb中,它不起作用......

# config/routes.rb

Rails.application.routes.draw do
  namespace :ec do
    namespace :home do
      get "/" => :index
    end
  end
end

访问http://localhost:3000/ec/home,然后获取

LoadError in Ec::HomeController#index
Unable to autoload constant Ec::HomeController, expected 
/Users/wadako/coincheck/app/controllers/ec/home_controller.rb to define it

它加载Ec::HomeController而非EC::HomeController

我不能使用rails4路由的资本模块名称吗?

2 个答案:

答案 0 :(得分:3)

config/initializers中创建inflections.rb。在此文件中定义:

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.acronym 'EC'
end

这样您就可以在大写字母中使用模块名称。

答案 1 :(得分:1)

让我们处理routes.rb

Rails.application.routes.draw do
  resources :home, only: :index, module: 'EC'  
end

这应该会为您提供映射到home_path

的路由助手EC:HomeController#index