2015-02-08 87 views
0

我的路由文件中有一个奇怪的问题。 这是我需要了解 此路线行不通具有可选参数优先级的Rails路由

# V3 
    # V3 - Home Page 
    match '/:locale' => 'v3/home#index', :constraints => V3Constraint, :as => :home 
    # V3 - Search 
    match '(/:locale)/products/search' => 'v3/products#search', :constraints => V3Constraint 
    # V3 - Categories index 
    match '(/:locale)/categories/(:parent_category((/*path)/:category))/(:full)' => 'v3/products#index', :constraints => V3Constraint, :as => :category 
    # V3 - Prduct Page 
    match '/:locale/products/:product' => 'v3/products#show', :constraints => V3Constraint, :as => :product 
    match '(/:locale)/search_amazon' => 'v3/products#search_amazon', :constraints => V3Constraint 
    # EOF V3 

的一部分,但这项工作

#V3 - Search 
    match '(/:locale)/products/search' => 'v3/products#search', :constraints => V3Constraint 
    # V3 - Categories index 
    match '(/:locale)/categories/(:parent_category((/*path)/:category))/(:full)' => 'v3/products#index', :constraints => V3Constraint, :as => :category 
    # V3 - Product Page 
    match '/:locale/products/:product' => 'v3/products#show', :constraints => V3Constraint, :as => :product 
    match '(/:locale)/search_amazon' => 'v3/products#search_amazon', :constraints => V3Constraint 
    # V3 - Home Page 
    match '/:locale' => 'v3/home#index', :constraints => V3Constraint, :as => :home 

如果我做了首页路线比它的工作原理其他较少的优先级,但是如果它像其他 这样的路线: 匹配'(/:locale)/ search_amazon'=>'v3/products#search_amazon',:constraints => V3Constraint 将会通向主页。

任何请解释为什么这会发生?

谢谢。

回答

1

有这样一个<yourdomain>/search_amazon路由将匹配这两种路线的第一个

match '(/:locale)/search_amazon' => 'v3/products#search_amazon', :constraints => V3Constraint 

在这种情况下,它会匹配,因为locale是可选在这里。

match '/:locale' => 'v3/home#index', :constraints => V3Constraint, :as => :home 

虽然这里将媒人search_amazonlocale值。