如何阻止Rails路由抢占另一个

时间:2015-08-12 03:01:40

标签: ruby-on-rails

我正在开发移动应用的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

1 个答案:

答案 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