3

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

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

更新

def call(env)
  if user_from_env(env).free_accout?
    InterestingPagesController.action(:how_to_signup).call(env)
  else
    @app.call(env)
  end
end
4

1 回答 1

1

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

于 2015-06-13T14:47:00.127 回答