Rails: send_file никогда не рендерит страницу или ошибка DoubleRender - PullRequest
1 голос
/ 03 ноября 2011

Итак, я пытаюсь запустить загрузку после покупки PayPal. Таким образом, первый способ, который я сделал, был при любой ошибке перенаправить на страницу с ошибкой. Это все работает за исключением того, что страница результатов никогда не отображается после отправки штрафа. Если я пытаюсь явно отобразить страницу, я получаю ошибку DoubleRender.

Итак, я заблудился от того, что нужно сделать:

У меня есть страница с именем getapk.erb, и в ее контроллере есть код getfile. Если я сталкиваюсь с ошибкой, я перенаправляю на pperror.erb

То есть я не перенаправляю на страницу с ошибкой, а если на этой странице?

1 Ответ

3 голосов
/ 04 ноября 2011

Когда вы 'send_file', это само по себе рендер. Таким образом, отображение страницы «успех» и отправка файла - это два отдельных рендера.

Я бы заставил страницу успеха и загрузить файл двумя отдельными действиями контроллера и отобразить ссылку на загрузку файла на странице успеха.

, например

def success
 #show html page with file download link
end

def file_download
 send_file #make sure you have :inline => false
end

Тогда вы можете использовать javascript, чтобы показать, что они рендерит оба одновременно.

В нижней части вашего success.erb поместите что-то подобное, чтобы автоматически вызывать диалоговое окно загрузки при рендеринге страницы успеха.

<script language="JavaScript">

    window.location=<%=url_for :action=>"file_download", :id => 'etc' %>;

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...