ruby-on-rails - rails : send_file never renders page or DoubleRender error

标签 ruby-on-rails file

所以我试图在用户在我的页面上完成购买后触发下载。我正在使用 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/

相关文章:

ruby-on-rails - 给定点和多边形的集合,确定哪个点位于(或不在)哪个多边形中

ruby-on-rails - Ruby on Rails 控制台导出表到 excel

linux 文件名(完整路径)编码

android - 在 Android 中通过 Intent 限制可选择的文件类型

ruby-on-rails - 在 Rails 4 中构建一个简单的计算器表单

ruby-on-rails - Ruby on Rails 的授权模型

python - 从文本文件中读取列表的元组作为元组,而不是字符串 - Python

c++ - 使用过多内存的文件解析 (C++)

php - 无法在智能手机中获取文件的 tmp_name ($_FILES)

ruby-on-rails - rails 在 Assets :precompile 之后没有路由匹配