2016-11-14 69 views
0

我正在使用Nokogiri在我的應用程序中生成XML文件。我想保存這個文件,並且我想顯示一個對話框,用戶可以在其中選擇下載此文件的文件夾。 這是在我的控制器動作:Rails send_data不保存文件

def download 
    require 'nokogiri' 

    if owner_signed_in? 

    @slips = current_owner.slips 

    builder = Nokogiri::XML::Builder.new do |xml| 

    xml.cedolini{ 

    @slips.each do |slip| 
     xml.cedolino{ 
     xml.codicecliente_ slip.client_code 
     xml.data_ slip.day.to_s 

     xml.ordini{ 
      slip.product_slips.each do |order| 

      xml.ordine { 
       xml.codicearticolo_ order.product_code 
       xml.descrizionearticolo_ order.product_description 
       xml.ammontare_ order.amount.to_s 
      } 
      end 
     } 
     } 
    end 
    } 
    end 


    file = builder.to_xml 
    send_data file, :type => 'text/xml; charset=UTF-8;', :disposition => "attachment; filename=db.xml" 

    end 
end 

我有這樣定義的路線:

get '/dbsinc/download' 

當我調用視圖中的作用,它不保存XML,我通過我的動作的url來查看新頁面,並在頁面中看到頁面上呈現的XML文件,但它不打開任何對話框來保存文件。 我哪裏錯了?由於

+0

什麼是'endit do'? –

+0

我在複製和粘貼時犯了一個錯誤,它只是和結束聲明,我現在用正確的代碼編輯了 –

+0

如果您修復了縮進,它也可能有助於易讀性。 –

回答

0

我想我想通了,路線:'後「dbsinc /下載」

在我看來,我定義這樣的鏈接:

<%= link_to 'Download ', {controller:'dbsinc', action:'download'}, method: :post %> 

而且它的工作原理,在下載對話框當我點擊鏈接時打開。

+0

這是解決問題的辦法嗎?如果是這樣,系統會給你一個超時時間,然後讓你選擇答案作爲解決方案。如果是,請將其格式化以提高可讀性。 –