Предварительная загрузка макета с Ruby on Rails - PullRequest
1 голос
/ 08 марта 2012

Мое приложение должно выполнять довольно трудоемкую операцию только при первом действии 'show' страницы.У меня есть определенный макет в app/views/layouts/application.html.erb, который я хотел бы показать с самой первой секунды, чтобы внутри этого макета находился счетчик и информационное сообщение, позволяющее пользователю знать, что для завершения операции потребуется некоторое время.После того, как эта операция закончена, я хотел бы заменить это сообщение реальным контентом, если это возможно, изменив его через AJAX, но я не возражал бы просто обновить страницу на данный момент.

У меня есть это вВ моем шоу-действии дорогостоящим процессом является 'load_suggestions' (около 5 секунд).

respond_to do |format|
      format.html do
        if @issue.suggestions == [] 
          load_suggestions
        end
      end
      format.xml  { render :xml => @issue }
      format.js   
      end 

Я считаю, что этот пост - Показывать экран загрузки при выполнении задачи в Rails 3 - имеет некоторые довольноинтересная информация для того, что я пытаюсь сделать.По сути, я бы включил эту функцию JavaScript в views/issues/show.js.erb.Проблема в том, что если я включу его туда, он будет вызываться каждый раз, и это не то, что я намереваюсь сделать.

Любые предложения, подсказки, руководство?

1 Ответ

0 голосов
/ 08 марта 2012

вы можете опробовать новый rails streaming api и визуализировать некоторый ожидающий код javascript до того, как загрузятся остальные ваши вещи.

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

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

...