Задать вопрос
@Fly3110
web developer

Почему не срабатывает несколько constraints в роутинге rails?

Всем привет.

Вот routes.rb:

Rails.application.routes.draw do
  constraints Constraints::AppRouter.new('first_domain') do
   ...
    get '/' => 'users#search', constraints: -> (request) { request.params[:q].present? }
   ...
  end

  constraints Constraints::AppRouter.new('second_domain') do
    get '' => 'tech#default_action'
  end


Если в запросе есть параметр "q", то управление передается в users#search независимо от домена. Constraints::AppRouter#matches? в этом случае даже не вызывается.
Правильно ли я понимаю, что общие constraints, которые оформлены блоками, в итоге применяются к каждому маршруту. Затем применяются те constraints, которые были прописаны в самих маршрутах.
Тогда я могу объяснить такое поведение.
То есть, чтобы сделать то, что мне нужно, надо в каждом "инлайновом" constraint'е учитывать еще и тот, который вверху?

Заранее спасибо.
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы