在rails中呈现视图后评估代码

时间:2012-03-21 09:54:10

标签: html ruby-on-rails ruby

在rails中我构建了一种cronjob,但是一旦视图被渲染,我想运行一些代码就像处理任务的'signoff'一样。

我在哪里放置代码以便在处理的绝对结束时运行(一旦呈现视图)

rails处理html如何缓冲? (它会在呈现或呈现后将HTML刷新到用户吗?)

2 个答案:

答案 0 :(得分:1)

您可以将视图呈现为字符串,捕获渲染时可能发生的任何超时,记录操作的结果,并返回字符串:

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. 如果您需要执行的代码仅由您的cron作业触发,则可以使用rake任务而不是控制器操作。

  2. 不是直接在你的cron作业中使用wget发出请求,你可以调用一个脚本来向你的控制器发出请求,检查请求的输出,然后记录结果(可能是通过调用控制器中的新动作。

答案 1 :(得分:0)

要从呈现的HTML中选择一个元素,您可以使用javascript / JQuery读取该值:

    $(document).ready(function() {  
        var completion = $('#items_processed').val();  
     });