【问题标题】:/x/search routes to x#show instead of x#search/x/search 路由到 x#show 而不是 x#search
【发布时间】:2014-09-18 21:44:10
【问题描述】:

我对轨道路由不知所措。 ´$.ajax -> lh:3000/nodes/search?q=blabla&_=1411073392872´ 路由到 Nodes#show 并且显然在那里失败,因为 show 需要像 /nodes/3/ 这样的 id 才能工作。

搜索路线

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´。我不明白为什么。

【问题讨论】:

    标签: ruby-on-rails ajax routes


    【解决方案1】:

    路由自上而下匹配。第一个匹配/nodes/search 的路由是你的show route,id 为"search"

    将您的自定义get /nodes/search 路由移到上方您的resources :nodes 行,以便/nodes/search 的GET 请求与预期路由匹配。

    或者,将其添加到您的资源声明中:

    resources :nodes do
      collection { get 'search' }
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      相关资源
      最近更新 更多