Ruby on rails 关于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
/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