如何在rails 3.2中设置pdf的下载链接?

时间:2012-04-12 05:39:45

标签: asset-pipeline ruby-on-rails-3.2

我是Rails的新手,我无法理解为什么会发生以下错误。我有一个页面,我链接了一个PDF文件和一些图像供下载。

在视图中:

link_to( image_tag('image.png'),:controller=>'home',:action=>'download', :file_name =>  'image.pdf') %>

在控制器中:

def download 
  send_file "#{RAILS_ROOT}/assets/pdf/#{params[:file_name]}", :type=>"text/pdf" 
end 

当我尝试在开发环境中下载文件时,出现以下错误:

No route matches [GET] "/assets"

我尝试更改文件的路径并在google和SO上搜索。我想这必须是一个相对简单的修复,可能与资产管道有关,但如果有人能指出我正确的方向,我会非常高兴。

1 个答案:

答案 0 :(得分:1)

嘿,我自己遇到了这个问题,我的解决方案(rails 2.0.2)是将pdf文件放到应用程序的公共目录中并直接链接www.yoursite.com/my.pdf将立即执行下载。

这是为什么? 一旦你部署你的应用程序rake资产:将运行预编译,因此资产将出现在你的公共目录中。

您也可以通过运行

在本地执行此操作
$:. rake assets:precompile RAILS_ENV="development"

虽然我不建议提交这些文件。