Контроллер Rails не вызывается, но логгер показывает «Обработка контроллером…» - PullRequest
1 голос
/ 22 марта 2019

Я пишу плагин для приложения Rails (Discourse) и настраиваю маршруты следующим образом:

Discourse::Application.routes.append do
  root to: 'custom#show'
end

К сожалению, приложение Rails уже определяет серию корневых маршрутов в своем файле routes.rb. Поскольку они указаны первыми, они имеют приоритет в соответствии с «Рельсы, идущие извне: 2.2 CRUD, глаголы и действия» .

Тем не менее, я заметил странную запись в логгере при изменении настройки маршрута следующим образом:

Discourse::Application.routes.prepend do
  root to: 'custom#show'
end

Используя prepend вместо append, вывод журнала Rails теперь запрашивает это при запросе корневого пути /:

INFO -- : Started GET "/" …
INFO -- : Processing by CustomController#show as HTML

Однако действие CustomController#show фактически не вызывается. Приложение ведет себя точно так же, как и раньше. Как я могу заставить Rails вместо этого вызывать этот контроллер и действие, как утверждает регистратор?

(Это своего рода дополнительный вопрос к «Для маршрутов с одинаковыми шаблонами URI, который сопоставляется первым?» )

1 Ответ

0 голосов
/ 22 марта 2019

Возможно какой-то бесконечный взгляд на ваш before_action s / ApplicationController / или унаследованный контроллер Discourse.

Вы можете отладить его с помощью операторов логирования и Ctrl-C во время запроса, чтобы увидеть, где находится зависание (появится трассировка стека).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...