我正在开发移动应用的API。我遇到了一个问题,我的一条路线正在抢占另一条路线。这两条路线是:
api_vocabs_all GET /api/vocabs/all(.:format) api/vocabs#all
api_vocab GET /api/vocabs/:id(.:format) api/vocabs#show
每当我导航到" api / vocabs / all" Rails使用id = all将请求发送到show方法。有办法解决这个问题吗?
更新:再次查看我的代码我注意到虽然上面的代码不起作用,但非api版本确实有效。我是否需要将我的路由放在命名空间内?
vocabs_all GET /vocabs/all(.:format) vocabs#all
vocab GET /vocabs/:id(.:format) vocabs#show
以下是来自routes.rb的所有路线
namespace :api do
resources :vocabs
end
get 'vocabs/all' => 'vocabs#all'
get 'api/vocabs/all' => 'api/vocabs#all'
resources :vocabs
答案 0 :(得分:1)
将我的评论转换为答案。将api/vocabs/all
置于namespace :api
之上。请记住,您的路由文件应从最具体的订购到最不具体的。
get 'api/vocabs/all' => 'api/vocabs#all'
namespace :api do
resources :vocabs
end
get 'vocabs/all' => 'vocabs#all'
resources :vocabs