所以我试图在用户在我的页面上完成购买后触发下载。我正在使用 send_file
可以正常工作,但我的结帐页面在文件发送后从未呈现。如果我尝试显式呈现结果页面,我会收到 DoubleRender 错误。
所以我不知道正确的做法是什么:我有一个名为 getapk.erb 的页面,并且在它的 Controller 中有 getfile 代码。
如何呈现页面并将文件发送给用户?
最佳答案
当您“发送文件”时,它本身就是一个渲染文件。因此,显示“成功”页面和发送文件是两个单独的渲染。
我会让成功页面和文件下载成为两个单独的 Controller 操作,并在成功页面上显示指向文件下载的链接。
例如
def success
#show html page with file download link
end
def file_download
send_file #make sure you have :inline => false
end
然后您可以使用 javascript 使其看起来像是在同时呈现两者。
在你的 success.erb 的底部放置类似这样的东西来在成功页面呈现时自动弹出下载对话框。
<script language="JavaScript">
window.location=<%=url_for :action=>"file_download", :id => 'etc' %>;
</script>
关于ruby-on-rails - rails : send_file never renders page or DoubleRender error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000561/