2012-02-10 39 views
5

初學者軌道問題:如何從軌道中的控制器返回文件?從軌道返回文件

我熟悉返回/渲染JSON對象。不過,我從來沒有返回/呈現一個文件W /任意擴展名。

從周圍閱讀它聽起來像render :nothing => true可能有所幫助。我只是在尋找一些指導或相關文件。

+0

可能的重複:http://stackoverflow.com/questions/1213957/exposing-files-from-a-service-through-a-rails-application – Baldrick 2012-02-10 18:47:18

回答

10

您可以使用內置導軌send_filesend_data方法。

要流(對於文件代理端點例如)一個文件,使用由send_file:

send_file("#{RAILS_ROOT}/path/to/file/on/server", 
    :filename => "client-suggested-filename", 
    :type => "mime/type") 

向(用於生成的PDF例如)流產生的數據,使用SEND_DATA:

send_data(your_data, 
    :filename => "client-suggested-filename", 
    :type => "mime/type") 

的文件擴展名和MIME類型不必匹配,但它們可能只是爲了符合最終用戶的期望。例如,如果您發送的MIME類型爲application/pdf,則應該將:filename設置爲something.pdf

如果您不確定您要發送的文件的MIME類型是什麼,您可以檢查this wikipedia page或使用mime-types寶石。 (或者如果您正在從存儲MIME類型的數據庫中讀取數據,請使用它)。

+0

'send_data'聽起來不錯。謝謝! – SundayMonday 2012-02-10 19:00:20