0

我的 create.js.erb:

var flashSuccess = "<%=flash[:add_comment_success]%>";
if (flashSuccess){
  $("#flash_messages").html("<div class='messages_notify'><div id='message-add_comment_success'><p class='message_content'></p></div></div>");
noty_ajax();
flashSuccess = undefined
}



var flashError = "<%=flash[:add_comment_error]%>";
if (flashError){
  $("#flash_messages").html("<div class='messages_notify'><div id='message-add_comment_error'><p class='message_content'></p></div></div>");
noty_ajax();
flashError = undefined
}

我的 app.js 文件:

function noty_ajax(){
$(".messages_notify #message-add_comment_success" ).each( function(){
        generate('success', 'Coment added.');
    }).remove();

    $( ".messages_notify #message-add_comment_error" ).each( function(){
        generate('error', 'Comment Error');
    }).remove();
}

还有什么问题。当我单击生成错误消息的按钮,然后单击生成成功消息的按钮时 - 当它生成成功消息时,它也会生成错误消息 - 所以有两条消息。我尝试删除,因为您可以在执行后看到“flashError”和“flasSuccess”,但它没有改变任何东西。你能看到第二条消息是在哪里生成的吗?我能做些什么来删除它?

回答

flashError 和 flashSuccess 总是正确的,不知道为什么,在第二次请求时,其中两个不是空的。我通过生成两个不同的 js 文件来解决这个问题,从控制器呈现:

if @comment.save
 return respond_to do |format|

    flash[:add_comment_success] = "success"
    format.html {redirect_to :back}
    format.js {render 'comments/success'}   /// and error.js.erb for error message
  end
else
     return respond_to do |format|

    flash[:add_comment_error] = "error"
    format.html {redirect_to :back}
    format.js {render 'comments/error'}   /// and error.js.erb for error message
  end
end

现在生成的 js 中没有两个变量,所以它可以工作。

4

1 回答 1

1

您的flashSuccessandflashError不是布尔值,并且 create.js 中的 if 条件将始终为真。
因此,这两条消息每次都会显示。

于 2013-08-27T07:25:59.547 回答