【问题标题】:Can I prevent a flash message from appearing after an AJAX call?我可以防止在 AJAX 调用后出现闪烁消息吗?
【发布时间】:2012-01-24 07:15:55
【问题描述】:

我有一个网站可以优雅地为没有 javascript 的用户降级。对于没有 javascript 的用户,控制器将使用 HTML 响应表单提交。对于使用 javascript 的用户,将有一个 AJAX 表单提交。这是在控制器的 create 方法中:

    if !@goal.save
      flash[:error] = array_to_list(@goal.errors.full_messages)
    else
      flash[:success] = "Your goal was successfully added."
    end      

    respond_to do |format|
        format.html { redirect_to :action => "show"}
        format.js
    end

如果用户启用了 javascript,我不想将这些消息放入 flash 中,因为它会在用户处理完之后显示。有没有办法告诉 Rails 仅在使用 html 响应时显示 Flash 消息

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    您可以将代码的flash 位放入您的format.html 块中以实现此目的。

    可能是这样的:

    @goal.save
    
    respond_to do |format|
      format.html do
        if @goal.errors
          flash[:error] = array_to_list(@goal.errors.full_messages)
        else
          flash[:notice] = "Your goal was successfully added."
        end
        redirect_to :action => "show"
      end
    
      format.js
    end
    

    您是否想过您可能希望在 AJAX 请求中也包含某种错误消息?如果您的 AJAX 请求因某种原因中断,从而无法保存内容,这可能是个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-13
      • 2019-12-15
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多