我想制作一个由API部分和基于Web的HTML部分组成的rails应用程序。当处理/api
下的请求时,我希望rails_api的瘦中间件能够处理性能优化请求,而其他任何请求都由默认的rails中间件处理。
我目前正在做的是,在路由中拆分命名空间,使api部分和web部分的控制器分别继承ActionController::API
和ActionController::Base
。
应用程序/控制器/ base_api_controller.rb
class BaseApiController < ActionController::API
...
end
应用程序/控制器/ API / projects_controller.rb
module Api
class ProjectsController < BaseApiController
def index
..
end
end
end
应用程序/控制器/ application_controller.rb
class ApplicationController < ActionController::Base
..
end
应用程序/控制器/ projects_controller.rb
class ProjectsController < ApplicationController
def index
..
end
end
配置/ routes.rb中
namespace :api do
resource :projects
end
resource :projects
配置/ application.rb中
config.autoload_paths += %W(
#{config.root}/app/controllers/api
)
现在我可以从/api/projects
正确收到回复,但是当我访问/projects
时,我收到错误消息
Unable to autoload constant ProjectsController,
expected /app/controllers/api/projects_controller.rb to define it.
我怎样才能让它发挥作用?或者我想要做的事情首先是不可能的?