从javascript/jquery创建flash消息
我正在javascript中轮询一个长时间运行的进程的成功/失败。如果进程失败,我需要它导航到特定页面并显示从javascript/jquery创建flash消息,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我正在javascript中轮询一个长时间运行的进程的成功/失败。如果进程失败,我需要它导航到特定页面并显示flash['alert']。我正在使用window.location.href导航到一个新页面,但我不知道如何从js创建flash['alert']。作为一个完整的临时黑客,我将传递一条错误消息作为url参数。然后,在我的控制器new操作中,我检查参数并在存在错误时创建flash['alert']。我不喜欢这个解决方案,我假设有一个更干净的方法来做 function checkRepor
flash['alert']
。我正在使用window.location.href
导航到一个新页面,但我不知道如何从js创建flash['alert']
。作为一个完整的临时黑客,我将传递一条错误消息作为url参数。然后,在我的控制器new
操作中,我检查参数并在存在错误时创建flash['alert']
。我不喜欢这个解决方案,我假设有一个更干净的方法来做
function checkReportStatus() {
var report_id = $(".report").data("report-id");
$.get('/reports/' + report_id + '/check_report_status', function(report_status) {
if (report_status === 'completed') {
location.reload();
}
else if (report_status === 'error' || report_status === 'failed') {
window.location.href = "new?error=ERROR_MESSAGE";
}
else {
console.log("Report generation in progress...");
setTimeout(checkReportStatus, 3000);
}
});
}
$('element').effect('highlight',{color:'#XXXXXX'},1500)
产生了一种不错的闪烁效果,因为您确实在标记中提到了jQ的使用。$('element').effect('highlight',{color:'XXXXXX',1500)
产生了一种不错的闪烁效果,因为您确实提到了在标签中使用jQ。我解决了这个问题,将检查报告\u状态
代码移动到控制器操作,并使用渲染
而不是重定向到
def check_report_status
@report = Report.find(params[:id])
flash[:error] = "Report error"
render :js => "window.location = 'PATH'"
end
我通过将
检查报告\u状态
代码移动到控制器操作并使用渲染
而不是重定向到
解决了这个问题
def check_report_status
@report = Report.find(params[:id])
flash[:error] = "Report error"
render :js => "window.location = 'PATH'"
end
您需要在JS中处理以上所有内容吗?为什么不能轮询一个控制器操作,它可以决定用消息呈现一个新页面。
check\u report\u status
是我正在轮询的控制器操作。它返回报告状态
。我试图在操作中添加一个重定向到,但似乎不起作用。也许是因为这是一个GET请求?另外,这是一个延迟的作业后台任务,因此我认为控制器操作是从工作者调用的,这可能无法重定向?您需要在JS中处理上述所有操作吗?为什么不能轮询一个控制器操作,它可以决定用消息呈现一个新页面。check\u report\u status
是我正在轮询的控制器操作。它返回报告状态
。我试图在操作中添加一个重定向到,但似乎不起作用。也许是因为这是一个GET请求?另外,这是一个延迟的作业后台任务,所以我认为控制器操作是从工作者调用的,可能无法重定向?