将路由文件拆分为多个文件

Kyl*_*cot 15 ruby routing ruby-on-rails ruby-on-rails-3

我正在使用Rails 3应用程序,我想根据子域将路由拆分为单独的文件.现在我在routes.rb文件中有这个:

Skateparks::Application.routes.draw do
  constraints(:subdomain => 'api') do
    load 'routes/api.rb'
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的routes/api.rb文件中,我有:

resources :skateparks
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,因为如果我跑,rake routes我得到

undefined method `resources' for main:Object
Run Code Online (Sandbox Code Playgroud)

另外,如果我尝试导航到http://0.0.0.0:3000/,我会得到:

路由错误

No route matches "/"
Run Code Online (Sandbox Code Playgroud)

Sam*_*son 6

在Rails 3.2中,config.paths现在是一个哈希值,所以@sunkencity的解决方案可以修改为:

# config/application.rb
config.paths["config/routes"] << File.join(Rails.root, "config/routes/fooroutes.rb")
Run Code Online (Sandbox Code Playgroud)


sun*_*ity 0

将路由文件添加到app路由加载路径中:

# config/application.rb
config.paths.config.routes << File.join(Rails.root, "config/routes/fooroutes.rb")
Run Code Online (Sandbox Code Playgroud)

将您的其他路由文件包装在这样的块中。

#config/routes/fooroutes.rb
Rails.application.routes.draw do |map|
  match 'FOO' => 'foo/bar'
end
Run Code Online (Sandbox Code Playgroud)

在 Rails 3.0 中为我工作

  • 我使用 config.paths.config.routes 收到错误 `undefined method `config' for #&lt;Rails::Paths::Root:0x007fc3fdd1e7a0` (2认同)