2013-08-26 58 views
0

我對ajax的配置文件發表了評論。當有人添加評論頁面不重新加載,所以我有問題與Flash消息。Rails ajax和jquery noty插件的flash消息

我comments_controller這個樣子的:

@comment = @profile.comments.includes(:user).new(params[:comment]) 
if @comment.save 
    flash[:add_comment_success] = "Comment added" 
    respond_to do |format| 

    format.html {redirect_to :back} 
    format.js 
    end 

else 

我對使用Flash的消息評論create.js.erb是這樣的:

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

而且我app.js是這樣的:

$(document).on("ready page:change", function() { 
    noty_load(); 
}); 

function noty_load(){ 

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

}

我認爲ajax負載有問題。我必須以某種方式檢查app.js是否加載了ajax,然後運行noty_load()。當我檢查螢火蟲,我看到閃光燈通知,但noty只是沒有看到它沒有頁面重新加載。如何在ajax請求發出時運行noty_load?

回答

0

在create.js.erb的最後調用noty_load()。如果你想使用烘乾機的方法,你可以使用一個佈局爲所有的JS這樣的迴應:

application.js.erb:

<%= yield %>; 
<% if flash.present? %> 
    <% flash_message = flash.first %> 
    $("#flash_messages").html("<div class='messages_notify'><div id='message-<%= j(flash_message.first) %>'><p class='message_content'><%= j(flash_message.last) %></p></div></div>"); 
    noty_load(); 
<% end %> 
+0

確定它的工作原理,但我怎麼能刪除通知?在頁面上,當我添加評論時,只有一個通知,但是當我重新加載它或去其他地方時,它會生成下一個3 noty – Wordica

+0

$(document).unbind('ajaxComplete');當我這樣做時,它只顯示一個更多的noty(不是3但是一個額外的noty)如何刪除多餘的noty – Wordica

+0

@Michael檢查我編輯的答案。我在顯示函數的末尾添加了'.remove()',以便在顯示消息後立即刪除消息。你不需要解除綁定。 – akhanubis