在rails中,我构建了一种cronjob,但是一旦呈现视图,我想在处理的任务上运行一些代码,如'signoff'。在轨中呈现视图后评估代码
我会在哪里把代码,以便它在处理已完全结束运行(一旦视图渲染)
如何轨处理HTML它缓冲? (难道冲洗HTML给用户作为其渲染或一旦其呈现?)
在rails中,我构建了一种cronjob,但是一旦呈现视图,我想在处理的任务上运行一些代码,如'signoff'。在轨中呈现视图后评估代码
我会在哪里把代码,以便它在处理已完全结束运行(一旦视图渲染)
如何轨处理HTML它缓冲? (难道冲洗HTML给用户作为其渲染或一旦其呈现?)
要挑选从呈现的HTML元素,你可以使用JavaScript读取值/ JQuery的:
$(document).ready(function() {
var completion = $('#items_processed').val();
});
我运行它作为一个cron任务,所以它的wget调用即时通讯不太确定它会处理JavaScript。 – Akshat 2012-03-23 10:01:14
可以渲染该视图为一个字符串,赶都可能发生,而渲染任何超时,登录行动的结果,并返回字符串:
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发出请求。控制器中的动作)。
是的,如果您在堆栈底部注入中间件,您将抓取渲染结果。该响应包含'html'。 – Reactormonk 2012-03-21 12:00:30
我将如何在控制器中实现它? 'format.html'之后(如果它存在 - 它并不总是出现在所有控制器中) – Akshat 2012-03-21 12:09:56
此操作是否需要能够防止呈现,还是管理?如果您不需要此代码来阻止渲染视图,则可以在控制器上使用'after_filter' ... – 2012-03-21 12:15:01