将rails_api与基于Web的html rails4应用程序

时间:2016-07-10 15:26:22

标签: ruby-on-rails rails-api

我想制作一个由API部分和基于Web的HTML部分组成的rails应用程序。当处理/api下的请求时,我希望rails_api的瘦中间件能够处理性能优化请求,而其他任何请求都由默认的rails中间件处理。

我目前正在做的是,在路由中拆分命名空间,使api部分和web部分的控制器分别继承ActionController::APIActionController::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. 

我怎样才能让它发挥作用?或者我想要做的事情首先是不可能的?

0 个答案:

没有答案