构造一个有效的路由
Structure a valid route
我的 Rails.application.routes
中有以下路线
get '/c/*name', :to => 'categories#show', :as => :filter_categories
get '/c/*name/*token', :to => 'categories#nest_products', :as => :nest_categories
和这个控制器
class CategoriesController < ApplicationController
def show
params[:name]
@products, @filters = ProductFilterService.new(params[:name]).filter_by_taxon
@selected_taxons = ProductFilterService.new(params[:name]).selected_taxons
end
def nest_products
puts params[:token]
render :show
end
end
像这个例子一样尝试 localhost:3000/adidas/fH72VLNlAma2JWc,我想执行方法 nest_products 但总是转到方法显示。
只需像这样更改路由的声明顺序,因此如果您有 token
参数,它首先匹配 nest_categories
:
get '/c/*name/*token', :to => 'categories#nest_products', :as => :nest_categories
get '/c/*name', :to => 'categories#show', :as => :filter_categories
因为localhost:3000/adidas/fH72VLNlAma2JWc
匹配两条路由,所以需要先声明最具体的。
我的 Rails.application.routes
中有以下路线get '/c/*name', :to => 'categories#show', :as => :filter_categories
get '/c/*name/*token', :to => 'categories#nest_products', :as => :nest_categories
和这个控制器
class CategoriesController < ApplicationController
def show
params[:name]
@products, @filters = ProductFilterService.new(params[:name]).filter_by_taxon
@selected_taxons = ProductFilterService.new(params[:name]).selected_taxons
end
def nest_products
puts params[:token]
render :show
end
end
像这个例子一样尝试 localhost:3000/adidas/fH72VLNlAma2JWc,我想执行方法 nest_products 但总是转到方法显示。
只需像这样更改路由的声明顺序,因此如果您有 token
参数,它首先匹配 nest_categories
:
get '/c/*name/*token', :to => 'categories#nest_products', :as => :nest_categories
get '/c/*name', :to => 'categories#show', :as => :filter_categories
因为localhost:3000/adidas/fH72VLNlAma2JWc
匹配两条路由,所以需要先声明最具体的。