在rails中我构建了一种cronjob,但是一旦视图被渲染,我想运行一些代码就像处理任务的'signoff'一样。
我在哪里放置代码以便在处理的绝对结束时运行(一旦呈现视图)
rails处理html如何缓冲? (它会在呈现或呈现后将HTML刷新到用户吗?)
答案 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'
您可以采取的其他一些措施来实现目标:
如果您需要执行的代码仅由您的cron作业触发,则可以使用rake任务而不是控制器操作。
不是直接在你的cron作业中使用wget发出请求,你可以调用一个脚本来向你的控制器发出请求,检查请求的输出,然后记录结果(可能是通过调用控制器中的新动作。
答案 1 :(得分:0)
要从呈现的HTML中选择一个元素,您可以使用javascript / JQuery读取该值:
$(document).ready(function() {
var completion = $('#items_processed').val();
});