2013-10-01 3 views
0

У меня есть приложение для рельсов с огромной базой данных (сотни гигабайт), которая имеет множество разных возможностей, что делать с данными. В некоторых случаях, как и изменение данных, это можно сделать в фоновом задании, которое я выполняю с Sidekiq. Но в других случаях, например, при просмотре данных с большим количеством строк и столбцов или сложных SQL-запросов, процесс получения данных занимает довольно много времени.Как указать длинный запрос пользователю в Rails?

Что я хочу сделать, это показать пользователю, что что-то происходит, когда он нажимает на ссылку. Как и индикатор выполнения многих браузеров, но более очевидный, поэтому даже пользователи, не привыкшие работать с браузерами, должны видеть, что что-то происходит и загружается.

Вопрос в том, как это сделать. Я уже пробовал разные варианты с AJAX и jQuery, но большую часть времени я могу сделать это только для определенных действий, но в основном я хочу сделать это для всего приложения. Поэтому каждый раз, когда пользователь отправляет запрос на загрузку новой страницы, я хочу немедленно показать ему, что что-то происходит.

Ближайший я пришел, это был Javascript, который всегда срабатывал. Проблема заключалась в том, что это буквально происходило каждый раз и заставляло перезагружать страницу. Это означает, что когда я переключил элемент, он показал индикатор выполнения, а затем перезагрузил страницу.

В сущности, то, что я ищу:

Мое приложение работает на Ruby, и Rails 4 и каждый раз, когда новая страница загружается, я хочу, чтобы пользователь, чтобы показать, что его запрос обрабатывается, так даже если запрос занимает пару секунд, пользователь не будет нервничать, потому что он знает, что что-то происходит.

Я был бы очень признателен за любую помощь для нахождения решения, потому что я не могу найти какой-то ...

+0

Можете ли вы сделать все запросы данных как Ajax-вызовы, которые отделены от остальной части страницы нагрузки. Таким образом, главная страница всегда «p [resent», и только страница-контент медленно загружается. Это также означает, что вы можете использовать значок загрузчика для каждой выборки содержимого страницы, потому что вы можете гарантировать, что вы останетесь с остальной частью страницы с js и т. Д. –

ответ

0

Вы должны использовать яваскрипта анимацию, чтобы показать пользователю, что что-то происходит.

Например: http://ricostacruz.com/nprogress/

+0

Итак, мне либо нужно изменить все ссылки и кнопки для работы с AJAX или интеграции Turbolinks в моем приложении? Потому что я думал, что будет решение без AJAX ... – schneiderinho

+0

Как хотите. Ваша цель - отслеживать% загрузки и обновлять вашу полосу прогрессии в соответствии с ней. – Pol0nium

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