Rails send_data不保存文件

时间:2016-11-14 17:43:47

标签: ruby-on-rails ruby xml nokogiri

我正在使用Nokogiri在我的应用中生成XML文件。我想保存这个文件,我想显示一个对话框,用户可以在其中选择下载此文件的文件夹。 这是我的控制器中的操作:

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文件,但它没有t打开任何对话框以保存文件。 我哪里出错了?感谢

1 个答案:

答案 0 :(得分:0)

我想我想通了,路线:`post' dbsinc / download'

在我看来,我用这种方式定义了链接:

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

它有效,当我点击链接时会打开下载对话框。