在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