从中间件渲染 "internal" Rails 控制器
Rendering an "internal" Rails controller from a middleware
我有一个Rails中间件栈,在ActionDispatch外有一块MW。理想情况下,我想通过触发 internal(无法通过通常的 URL 路由访问)的 URL 来使用 ActionDispatch 呈现页面 - 类似于 Devise 呈现的方式这是 "auth failed" 页。最好的办法是只按名称在应用程序中触发一个特定的控制器操作,并且 return 它是渲染结果(甚至没有在路由中)。
执行此操作的标准现代方法是什么?
更新:
def call(env)
if user_from_env(env).free_accout?
InterestingPagesController.action(:how_to_signup).call(env)
else
@app.call(env)
end
end
您可以 return 使用 controller.action 将控制器操作作为 Rack 端点,然后使用 endpoint.call() 或端点 [].
调用端点
我有一个Rails中间件栈,在ActionDispatch外有一块MW。理想情况下,我想通过触发 internal(无法通过通常的 URL 路由访问)的 URL 来使用 ActionDispatch 呈现页面 - 类似于 Devise 呈现的方式这是 "auth failed" 页。最好的办法是只按名称在应用程序中触发一个特定的控制器操作,并且 return 它是渲染结果(甚至没有在路由中)。
执行此操作的标准现代方法是什么?
更新:
def call(env)
if user_from_env(env).free_accout?
InterestingPagesController.action(:how_to_signup).call(env)
else
@app.call(env)
end
end
您可以 return 使用 controller.action 将控制器操作作为 Rack 端点,然后使用 endpoint.call() 或端点 [].
调用端点