在rails 2.3.11应用程序中,我正在尝试注册仅可用于登录用户的文件下载。 当他们点击链接下载文件(这是公共目录中的文件的直接链接)时,我想让Rails应用程序调用一个方法。rails link_to_function文件下载
我想我应该使用link_to_function,我可以在rails中编写javascript /方法来记录下载。
我不知道如何在调用该方法后继续下载文件。在方法调用之后(即在后台),文件下载应该开始。
任何想法?
在rails 2.3.11应用程序中,我正在尝试注册仅可用于登录用户的文件下载。 当他们点击链接下载文件(这是公共目录中的文件的直接链接)时,我想让Rails应用程序调用一个方法。rails link_to_function文件下载
我想我应该使用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
}
好的,有趣的,我会尝试一下。以前从未使用过send_data。 – 2011-06-14 20:18:52
阿卜杜拉Jibaly答案完美的作品是具有不需要的Javascript的优势。
我最终实现了一个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>
请张贴您的视图和控制器的相关部分。 – BryanH 2011-06-14 20:10:10