Ruby on rails 关于Rails路由命名空间

Ruby on rails 关于Rails路由命名空间,ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,在我的Rails应用程序中,我有一个控制器/app/api/mem\u controller.rb class MemController < AplicationApiController before_filter :mem_login? def follows _mem = MemAccount.find(params[:id]) render json: { :items=> _mem.follow_mems.limit(page_size

在我的Rails应用程序中,我有一个控制器
/app/api/mem\u controller.rb

class MemController < AplicationApiController
  before_filter :mem_login?
  def follows
    _mem = MemAccount.find(params[:id])
    render json: {
      :items=> _mem.follow_mems.limit(page_size).offset(page * page_size),
      :count=> _mem.follow_mems.length
    }.as_json(:methods=>['avatar_url'])
  end
end
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
我的路线是:

namespace :api do 
  get "mem/:id/follows" => 'mem#follows'
end
现在我想要的路线是
/api/mem/1/如下

但这会引发错误:

uninitialized constant Api
如果我取出
名称空间
包装器,
/mem/1/follows
就可以了

然后我想知道如何通过路由关键字
名称空间
实现
/api/mem/1/跟随
,我需要
api
前缀来避免冲突


我不想将
api
文件夹放在
/app/controller/
是的,当然可以,因为您正在使用命名空间。 试试这个:

class Api::MemController < AplicationApiController
    ...
end
如果您不想创建子文件夹,那么您应该在
routes.rb
中使用
scope
而不是
namespace
,在这种情况下,您可以保持
MemController
不变(我的意思是您不需要添加
Api::


更多说明:

是的,这将有效!但是我不想把
api
文件夹放在
/app/controller/
下,我只想把
api
controller
中独立出来。还有其他解决方案吗?谢谢。我更新了我的答案,如果你不想使用
api
文件夹,那么就使用
scope
app/controllers/api/mem_controller.rb
scope '/api' do

end