2013-07-10 45 views
2

我創建動態csv文件與此代碼在報告控制器:導軌和JQueryMobile - 雙渲染SEND_DATA

def exportCsv 
    @report = Report.find(:all) 

    csv = CSV.generate do |csv| 
     csv << ["id","cod_user_id","city","address","urgent level","description"] 
     @report.each do |r| 
     csv << [r.id,r.cod_user_id,r.city,r.address,r.urgent_level,r.description] 
     end 
     end 

    send_data csv, :type => 'text/csv', :disposition => "attachment; filename=list.csv" 
    end 

在show.html.erb文件鏈接的代碼是:

<a href="<%=url_for :controller=>"reports",:action =>"exportCsv"%>">Clicca qui</a> 

當我點擊鏈接時,下載不會啓動,並出現白頁。僅當我刷新白頁時纔開始下載。當我點擊下載鏈接時,我希望當前打開的頁面保持打開狀態並開始下載。

更新我 我用jquery.mobile-1.3.1,如果我不使用jQuery Mobile的它的工作,下載開始和當前頁面將保持開放,但如果使用jQuery移動的鏈接不工作正確的模式。

回答

1

添加數據的Ajax = 「假」 你的鏈接的屬性。默認情況下,鏈接在jQuery Mobile中使用Ajax加載。

<a data-ajax="false" href="<%=url_for :controller=>"reports",:action =>"exportCsv"%>">Clicca qui</a> 

根據文檔,你也可以使用rel =「external」,這也可以防止Ajax加載。兩者之間的差異是語義上的:當鏈接到域外的url時,應使用rel =「external」,而data-ajax =「false」用於內部鏈接。

+0

太棒了!有用!謝謝。 –

+0

投票答案並接受它也是一個偉大的方式來說「偉大!它的工作!謝謝」:) –

+0

我也建議改變問題標題,因爲它不是一個回報問題。 –

1

嘗試使用以下:

send_data csv, :type => 'text/csv', :disposition => "attachment", :filename => "list.csv" 

send_data文檔(http://apidock.com/rails/ActionController/Streaming/send_data):

:disposition - specifies whether the file will be shown inline or downloaded. 
    Valid values are ‘inline’ and ‘attachment’ (default). 
+1

我試過了,但不起作用。如果在點擊鏈接後不刷新頁面,則下載不會開始。 –

+0

問題是jquery mobile –