Ruby on rails 使用Rails API定制路由
我正在使用Rocket_gem为我现有的Rails应用程序提供API访问。我的路线有以下几条:Ruby on rails 使用Rails API定制路由,ruby-on-rails,rails-routing,Ruby On Rails,Rails Routing,我正在使用Rocket_gem为我现有的Rails应用程序提供API访问。我的路线有以下几条: # HTTP routing resources :posts do collection do get 'search' end end # API routing api :version => 1 do resources :posts, :only => [:index, :show] resources :pos
# HTTP routing
resources :posts do
collection do
get 'search'
end
end
# API routing
api :version => 1 do
resources :posts, :only => [:index, :show]
resources :posts do
collection do
get 'search'
end
end
end
我对posts/
和post/:id的json API请求有效
。但是,对localhost:3000/1/posts/search?query=my_query
的json API查询不起作用
(注意:http请求localhost:3000/posts/search?query=my_query
works)
如何解决此问题?我认为您不应该多次重新定义
api
块中的:posts
资源
api :version => 1 do
resources :posts, only: [:index, :show] do
collection do
get 'search'
end
end
end
您的解决方案似乎有效(即,我得到了一个不同的错误)。你能解释一下为什么多次定义
:posts
会引起麻烦吗?我对Rails路由内部的了解还不够,无法给你一个可靠的答案。是方法定义。我能告诉你的是,像这样的多重定义是不必要的,也是不整洁的;这两个原因都是不这样做的原因。如果路由映射程序不允许这样做,则更需要清理代码:)