渲染"内部" Rails控制器来自中间件

时间:2015-06-13 09:28:22

标签: ruby-on-rails rack middleware actionpack

我有一个Rails中间件堆栈,我在ActionDispatch之外有一块MW。理想情况下,我想通过触发一个 internal 的URL(不能通过常用的URL路由访问)来使用ActionDispatch呈现页面 - 类似于Devise呈现它的方式" auth failed& #34;页面。最好的方法是按名称在应用程序中触发一个特定的控制器操作,并返回它的渲染结果(甚至不在路径中)。

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

更新

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

1 个答案:

答案 0 :(得分:1)

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