/x /搜索路由到x#显示,而不是x#搜索
问题描述:
我对路由选择感到不知所措。 '$ .ajax - > lh:3000/nodes/search?q = blabla & _ = 1411073392872' 路由到节点#显示并显然失败,因为显示会需要类似/节点/ 3 /与ID工作。/x /搜索路由到x#显示,而不是x#搜索
耙路线
welcome_index GET /welcome/index(.:format) welcome#index
root GET / welcome#index
nodes GET /nodes(.:format) nodes#index
POST /nodes(.:format) nodes#create
new_node GET /nodes/new(.:format) nodes#new
edit_node GET /nodes/:id/edit(.:format) nodes#edit
**node GET /nodes/:id(.:format) nodes#show**
PATCH /nodes/:id(.:format) nodes#update
PUT /nodes/:id(.:format) nodes#update
DELETE /nodes/:id(.:format) nodes#destroy
edges_to_node GET /nodes/:id/toedges(.:format) nodes#searchtoedges
edges_from_node GET /nodes/:id/fromedges(.:format) nodes#searchfromedges
search_edges GET /edges/search(.:format) edges#search
**search_nodes GET /nodes/search(.:format) nodes#search**
在routes.rb中我得到这个
resources :nodes
resources :edges
get 'nodes/:id/toedges', to: 'nodes#searchtoedges', as: 'edges_to_node'
get 'nodes/:id/fromedges', to: 'nodes#searchfromedges', as: 'edges_from_node'
get '/edges/search', to: 'edges#search', as: 'search_edges'
**get '/nodes/search', to: 'nodes#search', as: 'search_nodes'**
其它所有路由工作特别是那些searchtoedges的。如果这很重要,我在ajax调用中使用/ nodes/search。对ajax的响应是一个RecordNotFound异常,抱怨show操作中没有id。所以由于某种原因,它会路由到'/ nodes /:id(。:format)=> nodes#show'。我不明白为什么。
答
从上到下路由匹配。匹配/nodes/search
的第一条路线是您的展示路线,其ID为"search"
。因此,对于/nodes/search
一个GET请求由预定航线相匹配
移动定制get /nodes/search
路线上述您resources :nodes
线。
或者,将其添加到您的资源声明:
resources :nodes do
collection { get 'search' }
end