Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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
Ruby on rails 我可以防止AJAX调用后出现flash消息吗?_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails 我可以防止AJAX调用后出现flash消息吗?

Ruby on rails 我可以防止AJAX调用后出现flash消息吗?,ruby-on-rails,ajax,Ruby On Rails,Ajax,我有一个网站,没有javascript的用户可以优雅地降级。对于没有javascript的用户,控制器将使用HTML响应表单提交。对于使用javascript的用户,将有一个AJAX表单提交。这在控制器中的创建方法中: if !@goal.save flash[:error] = array_to_list(@goal.errors.full_messages) else flash[:success] = "Your goal was successfu

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

    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消息?

为了实现这一点,您可以将代码的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请求因某种原因中断,导致内容无法保存,这可能是一个好主意。

您可以将代码的闪存位放入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请求因某种原因中断,因此无法保存内容,这可能是一个好主意