我正在使用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文件,但它没有打开任何对话框来保存文件。我哪里说错了?由于
我想我弄明白了,route: ' post 'dbsinc/download'
在我看来,我是这样定义链接的:
<%= link_to 'Download ', {controller:'dbsinc', action:'download'}, method: :post %>
它工作了,当我点击链接时,下载对话框打开了