从中间件渲染 "internal" Rails 控制器



我有一个Rails中间件堆栈,我在ActionDispatch之外有一个MW。理想情况下,我想通过触发内部 URL 来使用 ActionDispatch 呈现页面(无法通过通常的 URL 路由访问) - 类似于 Devise 呈现其"身份验证失败"页面的方式。最好的办法是按名称触发应用程序中的一个特定控制器操作,并返回其渲染结果(甚至没有将其包含在路由中)。

这样做的标准、现代方法是什么?

更新:

def call(env)
  if user_from_env(env).free_accout?
    InterestingPagesController.action(:how_to_signup).call(env)
  else
    @app.call(env)
  end
end
您可以使用

controller.action将控制器操作作为机架端点返回,然后使用endpoint.call()或endpoint[]调用端点。

最新更新