Вы можете использовать встроенные рельсы send_file или send_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 используется для файла, который выотправляя, вы можете проверить эту страницу википедии или использовать mime-types gem.(Или, если вы читаете из базы данных, в которой хранится тип MIME, используйте это).