Структурировать действующий маршрут - PullRequest
0 голосов
/ 13 июня 2019

У меня есть следующие маршруты внутри моего 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, но всегда перехожу к методу show.

1 Ответ

2 голосов
/ 13 июня 2019

Просто измените порядок объявления ваших маршрутов следующим образом, чтобы он сначала совпадал с nest_categories, если у вас есть token параметр:

get '/c/*name/*token', :to => 'categories#nest_products', :as => :nest_categories
get '/c/*name', :to => 'categories#show', :as => :filter_categories

Поскольку localhost:3000/adidas/fH72VLNlAma2JWc соответствует обоим маршрутам, вам необходимо сначала указать наиболее конкретное.

...