2012-02-10 41 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