如何在Rails中嵌入PDF



我是Rails开发的新手,我不明白如何在浏览器中嵌入PDF文件。我已经找过其他类似的问题了,我惊呆了。已经改变了所有的答案,但它就是不起作用。

这是我的功能

# create pdf function
def pdf
menu_pdf = File.join(Rails.root, 'app/assets/files/menulq2.pdf')
send_file(menu_pdf, filename: 'menulq2.pdf.pdf', disposition: 'inline', type: 'application/pdf')
end

现在我不知道下一步该做什么。

您链接到的SO答案是关于从您的服务器下载/发送PDF文件。您需要进一步向下滚动以了解如何在HTML视图中显示pdf。

没有理由在你的模型中有一个SomeModel#pdf方法,除非每个记录链接到一个特定的PDF(例如,如果模型是Restaurant,你有一个PDF菜单为每个restaurant)。


你可以直接使用HTMLembed标签:

<embed src="http://example.com/the.pdf" width="500" height="375" type="application/pdf">

只要"app/assets/files"的路径在资产管道中,您可以使用asset_path助手:

<embed src="<%= asset_path('menulq2.pdf') %>" width="500" height="375" 
type="application/pdf">

这里的好处是,如果你的资产被预编译,文件名可能会从menulq2.pdf更改为menulq2-60aa4fdc5cea14baf5400fba1abf4f2a46a5166bad4772b1effe341570f07de9.pdf,在这种情况下,你作为开发人员,实际上不知道PDF的文件名实际上是什么。

因此,asset_path帮助器允许您指定简单的文件名,而不必担心资产复杂性可能对名称做了什么。


如果这太繁琐,或者您知道该资产没有得到预编译,您可以将其硬编码到HTML:

<embed src="/assets/files/menulq2.pdf" width="500" height="375" 
type="application/pdf">

要硬编码URL,您需要通过在环境文件(/config/environments/*.rb)中将其设置为true来确保提供静态文件:

For Rails 4:config.serve_static_files = true

For Rails 5+:config.public_file_server.enabled = true

相关内容

  • 没有找到相关文章

最新更新