我有一个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[]调用端点。