【问题标题】:Rendering an "internal" Rails controller from a middleware从中间件渲染“内部”Rails 控制器
【发布时间】:2015-08-29 06:59:17
【问题描述】:

我有一个 Rails 中间件堆栈,并且我在 ActionDispatch 之外有一块 MW。理想情况下,我想通过触发 internal 的 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

【问题讨论】:

    标签: ruby-on-rails rack middleware actionpack


    【解决方案1】:

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

    【讨论】:

    • 想添加一些示例代码吗? IE。我需要提供的机架响应是什么?或者我如何在中间件中调用控制器?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2014-03-31
    • 2016-12-14
    • 2016-02-03
    • 2014-01-12
    • 2014-11-02
    • 2013-02-15
    相关资源
    最近更新 更多