2014-10-22 68 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>