我的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”执行后但它没有改变任何东西。你能看到第二条消息的生成位置以及我可以做些什么来删除它吗?
ANSWER
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中没有两个变量,所以它可以工作。
答案 0 :(得分:1)
您的flashSuccess
和flashError
不是布尔值,并且create.js中的if条件将始终为真。
因此,每次都会显示这两条消息。