无法在 Rails 4 中将 render:text 与 proc 一起使用

Unable to use render :text with a proc in Rails 4

我正在尝试将存储在 Amazon S3 上的数据流式传输到客户端。不幸的是,我无法重定向到带有预签名 URL 的存储桶,以支持 HTML 等文件,这些文件需要从与其资产相同的域提供原始 HTML 文件(css,等等)。

看完http://apidock.com/rails/ActionController/Base/render

我觉得我应该能够做到以下几点:

 render :text => proc { |response, output|
   s3_object.get(response_target: output)
 end

然而,页面上的输出只是 proc.to_s

的结果

同样,Rails 文档中提供的示例:

 render :text => proc { |response, output|
    100.times do |i|
      output.write("This is line #{i}\n")
    end
  }

似乎也是如此。

有人 运行 遇到过这个问题吗?为什么 Rails 没有正确呈现 lambda 的结果而不是调用 .to_s?

谢谢。

正如您的 link 所说,此选项在 Rails 2.3.8 之前可用。

它已从 Rails 3.

中弃用

这是一个显示此功能问题的旧时讨论:https://groups.google.com/forum/#!topic/rubyonrails-core/BnVHfD-yO_I