2012-01-24 34 views
1

我有一个网站,优雅降低没有JavaScript的用户。对于没有JavaScript的用户,控制器将响应HTML提交表单。对于使用javascript的用户,将会有一个AJAX表单提交。这是在控制器中创建方法:我可以防止在AJAX调用后出现Flash消息吗?

if [email protected] 
     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,因为这时它会显示在用户已经处理了它。有没有什么办法可以告诉Rails如果用html响应,只显示

回答

4

您可以将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请求由于某种原因而中断,以至于不能保存,这可能是一个好主意。

相关问题