在我的Rails应用中,我有一个控制器/app/api/mem_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
我在application.rb
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
我的路线是:
namespace :api do
get "mem/:id/follows" => 'mem#follows'
end
现在我希望路线为/api/mem/1/follows
。
但这引起了错误:
uninitialized constant Api
如果我取出namespace
包装器,/mem/1/follows
将会正常工作。
然后我想知道如何通过路由关键字/api/mem/1/follows
实现namespace
,我需要api
前缀来避免冲突。
我不想将api
文件夹放在/app/controller/
下
答案 0 :(得分:2)
是的确定,因为您正在使用命名空间。 试试这个:
class Api::MemController < AplicationApiController
...
end
并且控制器MemController应该是:
app/controllers/api/mem_controller.rb
如果您不想创建子文件夹,那么您应该在scope
中使用namespace
代替routes.rb
,在这种情况下,您可以保留MemController
1}}不改变(我的意思是你不需要添加Api::
)
scope '/api' do
end