我知道这些文件存在且可读。
我正在尝试使用指向文件位置的a
标记创建一个按钮下载文件的按钮。它没有用,所以我将a
标签直接指向该文件,然后我收到一个错误,告诉我它无法找到它。
找到文件(XML类型文件)(随后解析并呈现正常):Dir.glob('app/assets/directory/*')
这可能是资产被编译的问题吗?
我处于开发模式。
答案 0 :(得分:1)
您不应该直接从浏览器访问app/assets
。预编译资产时,会将app/assets
中的资产复制到public/assets
,并且通常会添加指纹。例如:
app/assets/images/image.png
变为
public/assets/image-0a5440e6975d3b7d5ab8f485e33fd6e5.png
停止服务器。如果您有目录,请删除public/assets
和tmp/cache/assets
目录。预编译资产rake assets:precompile
。启动服务器。然后,在public/assets
标记中查看您要引用的特定文件a
。因此,在这种情况下,您将导航到localhost:3000/assets/image.png
但是为生产硬编码文件名并不是一个好主意。你应该让Rails用嵌入式标签来实现神奇。
答案 1 :(得分:1)
预编译资产后,文件名将被更改,指纹代码将添加到文件名的末尾。例如,app/assets/icon.png
将变为public/assets/icon-10116c180e629f40e8ebe9a856d25d49.png
。
您可以使用以下命令实现资产文件的预编译名称:
asset_path 'icon.png'
要建立文件链接,您可以使用:
<%= link_to 'link_title', asset_path('icon.png') %>