Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript/jquery创建flash消息_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

从javascript/jquery创建flash消息

从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

我正在javascript中轮询一个长时间运行的进程的成功/失败。如果进程失败,我需要它导航到特定页面并显示
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请求?另外,这是一个延迟的作业后台任务,所以我认为控制器操作是从工作者调用的,可能无法重定向?