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

How to render pdf into web browser in RoR

我在服务器中有一些文件,我想对其 url 保密。为此,我创建了一个控制器来获取数据并最终将其呈现给网络浏览器。

在视图中

<%= 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 文件吗?

谢谢!

你不能那样调用 render。它期待非常具体的选择。在这种情况下,它可能看起来像:

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

请注意,您可能希望限制该工具获取的内容类型,否则有人最终会滥用它。