Оцените код, как только представление будет отображено в рельсах - PullRequest
4 голосов
/ 21 марта 2012

В рельсах я создал своего рода cronjob, но как только представление будет отображено, я хотел бы выполнить как 'signoff' обработанную задачу.

Куда бы я поместил код, чтобы он выполнялся в абсолютном конце обработки (после визуализации представления)

Как rails обрабатывает html-буфер? (Будет ли он выводить HTML пользователю при его визуализации или после его визуализации?)

Ответы [ 2 ]

1 голос
/ 11 апреля 2012

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

begin
  @elements = Element.find(:all)
  html = render_to_string
  # Store the result
  Result.create(:element_count => @elements.count)
rescue Timeout::Error
  # Store the result of the call as failed?
  Result.create(:element_count => 0)
end
send_data html, :disposition => 'inline', :type => 'text/html'

Некоторые другие действия, которые вы можете сделать длядостижение вашей цели может быть следующим:

  1. Вы можете использовать задачу rake вместо действия контроллера, если код, который вам нужно выполнить, запускается только вашим заданием cron.

  2. Вместо того, чтобы напрямую делать запрос с помощью wget в вашем задании cron, вы можете вызвать скрипт, который отправит запрос вашему контроллеру, проверить вывод запроса, а затем записать результат (возможно,вызов нового действия в контроллере).

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

Чтобы выбрать элемент из представленного HTML, вы можете прочитать значение, используя javascript / JQuery:

    $(document).ready(function() {  
        var completion = $('#items_processed').val();  
     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...