Вам нужно будет разделить метод назначения на контроллере и обновить маршруты.
Я бы рекомендовал этот подход:
namespace :lawyers do
get 'division/:division/:district' => "profiles#division", as: :division_district_all
get 'speciality/:speciality/:sub_speciality' => "profiles#speciality", as: :speciality_subspeciality_all
end
Обновление : Основываясь на строгих требованиях, вы можете использовать параметры запроса all/:division/:district?query_by=divison
, вам понадобится только один маршрут.
get 'all/:primary/:secondary' => "profiles#index", as: :lawyers_all
А затем в контроллере управляйте logi c с чем-то вроде
def index
case params[:query_by]
when 'division'
# Division logic here
when 'speciality'
# speciality logic here
else
# Error handling here
end
end
Обновление 2 : Как вы упомянули в комментариях, URL-адрес не может измениться. Тем не менее, вам понадобится только один маршрут
get 'all/:primary/:secondary' => "profiles#index", as: :lawyers_all
И проверьте наличие в db на основе параметров, это повлияет на производительность вашего приложения, создав много запросов db, а также создаст потенциальную проблему сопоставления с неверными классами.
def index
if Division.find_by(name: params[:primary]).present?
# Division logic here
elsif Speciality.find_by(name: params[:primary].present?
# speciality logic here
else
# Error handling here
end
end