如何在RoR中将pdf渲染到Web浏览器中

时间:2015-02-13 20:41:18

标签: ruby-on-rails ruby pdf ruby-on-rails-4 httpresponse

我在服务器中有文件要为其保密。为此,我创建了一个控制器,用于获取数据并最终将其呈现给Web broswer。

在视图中

<%= link_to "Click to view the file", file_proxy( user.pdf_file_url ) %>

在users_heper.rb

def file_proxy(url)
  file_proxy_path(url: url)
end

在routes.rb

get "file_proxy" => "file_proxy#fetch"

在控制器中

def FileProxy < ApplicationController
  def fetch
    response = HTTParty.get params[:url]
    render response
  end
end

我得到<HTTParty::Response:0x10cd6e6a8 parsed_response="%PDF-1.3......" is not an ActiveModel-compatible object. It must implement :to_partial_path.

您知道如何调整此代码以便正确显示PDF文件吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您无法以这种方式致电render。它期待非常具体的选择。在这种情况下,它可能看起来像:

pdf_content = HTTParty.get(params[:url])
send_data(pdf_content, disposition: 'inline', type: 'application/pdf')

作为一个注释,您可能希望限制工具提取的内容或最终会滥用它的内容。