如何在 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')
请注意,您可能希望限制该工具获取的内容类型,否则有人最终会滥用它。
我在服务器中有一些文件,我想对其 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')
请注意,您可能希望限制该工具获取的内容类型,否则有人最终会滥用它。