2

当用户发送带有特定标头和参数的 HTTP 请求时,我试图从控制器外部准确地呈现我的 Rails 应用程序从控制器内呈现的内容。

ApplicationController.renderer对此非常好,但是它需要我传递模板需要呈现的特定实例变量。这对我不起作用,因为它跳过了我的应用程序用来确定assigns模板所需的逻辑。

例如,我的应用程序必须before_filter从标题中确定要使用的HTTP_ACCEPT_LANGUAGE语言并将该语言发送到模板。我不想在要渲染到字符串的控制器之外复制此逻辑。

在这里工作的一个“解决方案”是以编程方式向我的应用程序发送一个带有适当标头等的实际 HTTP 请求,但这显然效率低下。

我想要的是能够做这样的事情:

ApplicationController.renderer.new({
  params: {
    q: 'search term'
  },
  request: {
    env: { 'HTTP_ACCEPT_LANGUAGE': "en" }
  }
}).render(inline: "<%= params[:q] %> in lang <%= request.env['HTTP_ACCEPT_LANGUAGE'] %>")

这可能吗?

4

0 回答 0