如何解决rails link_to_function文件下载
|| 在Rails 2.3.11应用程序中,我尝试注册仅对登录用户可用的文件下载。 当他们单击链接下载文件时(这是指向公共目录中文件的直接链接),我希望Rails应用程序调用一个方法。 我想我应该使用link_to_function,我可以在rails中编写javascript /方法来记录下载。 我不知道在调用该方法后如何继续下载文件。在方法调用之后(在后台),应该开始文件下载。 有任何想法吗?解决方法
您可能对此考虑过多,不需要Javascript。您需要的是一个下载操作的链接,该操作依次注册下载内容,然后将文件流式传输回去。除非您有一个不希望Rails进行处理的非常大的文件,否则它应该可以正常工作。
从控制器发回二进制文件的示例:
send_data(binary_data,:type => \'application/pdf\',:filename => \'myfile.pdf\',:disposition => \'inline\' )
甚至更好:
render :content_type => \'application/octet-stream\',:text => Proc.new { |response,output|
# do something that reads data and writes it to output
}
, Abdullah Jibaly的回答完美无缺是具有不需要Java脚本的优势。
我最终实现了一个jQuery javascript解决方案,使文件下载像以前一样。
在我看来,添加下载类的链接对于js的工作很重要:
<%= link_to document.type.value,document.scan.url,:popup => true,:class => \"download\" %>
添加的javascript,我添加了property_id作为要发布的数据,因为我需要在控制器中使用该值:
<script type=\"text/javascript\">
$(document).ready(function() {
$(\".download\").click(function(event){
$.post(\"/ajax/property_interested_user\",{ property_id: $(\"#property_id\").html() });
});
});
</script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。