Rails控制器未调用,但记录器显示“正在由控制器处理...”

时间:2019-03-22 10:06:05

标签: ruby-on-rails ruby controller

我正在为Rails应用程序(Discourse)编写插件,并设置如下路由:

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

不幸的是,Rails应用程序已经在其routes.rb文件中定义了一系列根路由。由于首先指定了它们,所以根据“Rails Routing from the Outside In: 2.2 CRUD, Verbs, and Actions”优先考虑。

但是,在更改这样的路由设置时,我注意到记录器中有一个奇怪的记录:

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调用此控制器和动作?

(这是“For routes with identical URI patterns, which is matched first?”的后续问题)

1 个答案:

答案 0 :(得分:0)

在您的before_action s / ApplicationController /或继承的Discourse控制器中,可能有某种无限的外观。

您可以在请求期间使用日志记录语句和Ctrl-C对其进行调试,以查看挂起的位置(将显示堆栈跟踪)。