Сначала комментарий: вам следует избегать нескольких минут запросов (вы должны использовать фоновую обработку).
Теперь, в зависимости от того, что вы на самом деле делаете в этом запросе, стандартный метод - опросить сервер (через повторяющийся запрос ajax, отличный от текущего запроса) о ходе выполнения текущей задачи.
Вы можете сделать это с помощью функции periodically_call_remote .
Чтобы иметь представление:
На ваш взгляд:
<%= periodically_call_remote(
:condition => "check_var == false",
:frequency => 3,
:url => { :action => "evaluate_progress" }) %>
В вашем контроллере:
def evaluate_progress
# replace it with code that actually computes the progress
done = 0.6
render :update do |page|
if(done == 1)
page << "check_var = false" #To stop querying the server
else
page << "check_var = true"
page.replace_html('your_div_id', "The task is #{done*100}% complete.")
end
end
end
Опять же, это просто доказательство концепции, я не проверял это. Фактический код зависит также от того, что вы фактически делаете в длительном запросе.