【发布时间】:2015-02-18 22:34:21
【问题描述】:
我正在尝试在我的控制器中使用asset_path 来生成放置在我的assets/data/ 目录中的pdf 的路径。这在 Rails 4 中已经过时了吗?
这是我抛出错误的控制器代码:
def beg_1
File.open(asset_path("ee-beg-1.pdf"), 'r') do |f|
send_data f.read.force_encoding('BINARY'), :filename => "ee-beg-1.pdf", :type => "application/pdf"
end
end
【问题讨论】:
-
也许它需要像这样包裹在一个字符串中?
"#{asset_path('ee-beg-1.pdf')}" -
@NielsB。你是对的,asset_path 返回一个字符串,这就是 File.open() 为
filename参数所采用的:ruby-doc.org/core-2.1.4/File.html#method-c-open -
更改为
File.open('app/assets/data/ee-beg-1.pdf') -
恰到好处!您是否碰巧知道如何在浏览器中查看它而不是下载 PDF?抱歉,这是一个不同的问题,所以如果您不想在这里回答,我理解。
-
附带说明,我强烈建议您不要在资产目录中为您的网站/应用程序提供可下载内容。 Assets 目录在 Rails 应用程序中有一个特殊的用途,它不仅仅是一个文件存储。我建议从 lib 中的子目录提供下载。
标签: ruby-on-rails