2017-08-04 152 views
0

我在.erb如下:由send_file在轨不会下载到浏览器 - 而不是在加载浏览器窗口中直接

<%= link_to 'Download PDF', planners_download_pdf_url %> 

我有以下的方法来应对:

def download_pdf 
    send_file(
    "#{Rails.root}/Thing/ex/example.xls", 
filename: "mything.xls", 
type: "application/xls" 
) 
    end 

我路线有:

get '/planners/download_pdf' 

当我点击我的链接,该方法确实被调用。我的问题是,不下载到浏览器。相反,它需要我在浏览器中打开的选项卡并将文件转储为HTML。像......你见过在记事本中打开过的Excel文件吗?它这样做。请看下图:

Garbage

我如何得到这个,而不是下载的文件?

+0

我希望这有助于你
[https://stackoverflow.com/questions/13164063/file-download -link-in-rails](https://stackoverflow.com/questions/13164063/file-download-link-in-rails) –

+0

如果你使用'send_data',会发生什么?另外,你与'pdf ''VS :) xls'我 –

回答

4

您需要添加disposition: 'attachment'send_file选项哈希(或者至少确保你没有disposition: 'inline'集,因为'attachment'应该是默认值)。

如果这不是问题,如果你正在使用Turbolinks,如other answers提到您(在link_to标签帮手例如为:data: {turbolinks: false})在您的链接元素设置data-turbolinks="false"需要disable Turbolinks on the link

最后,这里有一些其他的东西来尝试,如果这不起作用:

  • 设置type'application/vnd.ms-excel',有效的MIME类型XLS文件。
  • 上直接设置链接标签的download="mything.xls"html5 attribute(如:。download: 'mything.xls'link_to标记辅助
+0

实际上改变了方法: 由send_file( “#{} Rails.root /Planners/viacom/Viacom_TVE_March_2017_PAIDs_03102017.xls”, filena me:“mything.xls”, 类型:“application/xls”, 处置方式:'attachment' ) 仍然会出现此问题。 – PinkElephantsOnParade

+0

如果您使用Turbolinks,这可能是问题的原因,并且您可以尝试在链接标记中禁用该功能。 – wjordan

+0

在这种情况下,我不使用turbolink。这只是一个香草erb link_to。不过,我会检查重复的问题。 – PinkElephantsOnParade

相关问题