Rails:send_file 从不渲染页面或 DoubleRender 错误

Ros*_*s R 3 ruby-on-rails file

因此,我尝试在用户在我的页面上完成购买后触发下载。我正在使用send_file它,但在文件发送后我的结帐页面永远不会呈现。如果我尝试显式渲染结果页面,则会收到 DoubleRender 错误。

所以我不知道正确的做法是:我有一个名为 getapk.erb 的页面,并且在其控制器中有 getfile 代码。

如何呈现页面并将文件发送给用户?

Dav*_*low 5

当您“发送文件”时,它本身就是一个渲染。因此,显示“成功”页面和发送文件是两个单独的渲染。

我将使成功页面和文件下载成为两个单独的控制器操作,并在成功页面上显示指向文件下载的链接。

例如

def success
 #show html page with file download link
end

def file_download
 send_file #make sure you have :inline => false
end
Run Code Online (Sandbox Code Playgroud)

然后你可以使用 javascript 使其看起来它们同时渲染。

在 success.erb 的底部放置类似这样的内容,以便在成功页面呈现时自动弹出下载对话框。

<script language="JavaScript">

    window.location=<%=url_for :action=>"file_download", :id => 'etc' %>;

</script>
Run Code Online (Sandbox Code Playgroud)