2014-10-22 53 views
0
How to give the xls file link in ruby. This is my file path 
link_to "Excel", "/#{RAILS_ROOT}/public/reports/10014_ByNetwork.xls", :target=>"_blank" 

当我上面给出的链接是将这样的如何在Ruby on Rails中提供xls文件链接?

<a href="//home/kiran/shekar/wavespot/public/reports/10014_ByNetwork.xls" target="_blank">Excel</a> 

因此,它不能正常工作。其实我需要这样的

<a href="file:///home/kiran/shekar/wavespot/public/reports/10014_ByNetwork.xls" target="_blank">Excel</a> 

请给我确切的路径...

+0

你知道,这个链接只会在你的计算机上工作,不会在任何其他工作,对不对? – BroiSatse 2014-10-22 09:42:58

+0

是的,我只需要在我的电脑中 – user748447 2014-10-22 09:50:06

回答

0

你确定你需要的文件://链接?它不是由Rails服务器运行,只能在你的机器上运行。也许生成这样的链接会更好:“http://you_server_url.org/public/file.xml”。它可以在本地和远程应用程序上正常工作,并且可以通过控制器操作管理文件发送。

0

在你的视图文件试试这个:

<%= link_to 'Excel',"/reports/10014_ByNetwork.xls" :target=>"_blank" %> 
2

@Gagan你的语法不正确。发布前你应该测试你的答案。这是正确的做法:

<%= link_to 'Excel',"/reports/10014_ByNetwork.xls", target: "_blank" %> 

OR

<%= link_to 'Excel',"/reports/10014_ByNetwork.xls", :target=>"_blank" %> 

你已经错过了第二次用双引号后面的逗号。

0

,如果你有一个以上的文件下载,你必须使用沿着你的看法不同环节我可以给你推荐下一个方法太:

添加下载XLS占用资源路线帮手routes.rb文件,如:

get "downloads/xls/:id" => "downloads#xls", :as => :download_xls 

在您的控制器,为我的我的例子,我将使用app/controllers/downloads_controller.rb,我们将需要添加XLS行动与send_file流数据:

def xls 
    if params[:id] 
    send_file("#{Rails.root}/public/reports/#{params[:id]}.xls", 
       filename: "#{params[:id]}.xls", 
       type: 'application/excel', 
       disposition: 'attachment') 
    end 
end 

你可以阅读更多关于它在这里: http://apidock.com/rails/ActionController/DataStreaming/send_file

最后,在你看来,你将使用link_to帮助我们宣布上述download_xls_path路线和作为参数的文件名:

<p> 
    Click to download: </br> 
    <%= link_to "NameOfYourXlsFile.xls", download_xls_path(NameOfYourXlsFile) %> 
</p>