我的问题与this question非常相似,但这个答案对我不起作用。我有一个自定义的XML文件,我想下载它而不是由浏览器呈现。我对上面链接的问题尝试了send_file方法,比如the answer,但也得到了一个错误can't convert Hash into String
控制器:

respond_to do |format|
  format.tmx
end

模板:show.tmx.erb
<?xml version="1.0"?>
<tmx xmlns="http://www.gala-global.org/oscarStandards/tmx/tmx14b.html" version="1.4b">
</tmx>

视图(我希望此链接下载文档而不是在浏览器中呈现):
 <%= link_to "Download", document_path(@document, format: "tmx") %>

最佳答案

您可以使用send_文件,但它需要引用已提供内容的另一个端点。或者,如果不在任何其他上下文中使用XML,则可以使用以下内容:

format.tmx { send_data render_to_string(:show), filename: 'file.tmx', type: 'application/xml', disposition: 'attachment' }

HTH

09-05 01:26