2014-02-19 2 views
0

В index зрения, есть ссылка на скачивание файла:Что случилось после send_file в контроллере Rails?

<%= link_to filename, listing_download_path(:file => filename) %> 

В контроллере:

def download 
    pathname = File.join(USER_FOLDER, params[:file]) 
    if File.file?(pathname) 
     send_file pathname 
    end 
    end 
end 

Когда загрузка пользователь нажмет, файл загрузки всплывающее окно отображается. Что происходит после загрузки файла? Разве рельсы просто сидят и больше ничего не делают? Если я удалю строку send_file, будет отображаться dwonload.html.erb. Делает send_file просмотр пропусков?

Что делать, если я хочу показать что-то вроде «Вы скачали ...»?

+0

Я думаю, что рельсы (или рубины) не отправляют данные сами. Он использует X-Sendfile для передачи/обработки данных на веб-сервере. Вы можете прочитать об этом здесь: http://www.therailsway.com/2009/2/22/file-downloads-done-right/ –

ответ

0

send_file - это рендер. Вы можете использовать подход, предложенный в этом вопросе:

Rails: send_file never renders page or DoubleRender error

В основном загрузка ссылка будет отправлять на «успех» вид, из которого вы вызываете метод загрузки файла автоматически.

Смежные вопросы