0

我用 ajax 对个人资料发表了评论。当有人添加评论页面时不会重新加载,所以我遇到了 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

我的 create.js.erb 用于使用 Flash 消息创建评论,如下所示:

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加载有问题。如果加载了 ajax,我必须以某种方式检查 app.js,然后运行 ​​noty_load() 。当我签入萤火虫时,我看到了闪光通知,但没有重新加载页面就看不到它。发出ajax请求时如何运行noty_load?

4

1 回答 1

0

在create.js.erbnoty_load()的末尾调用。如果您想使用 DRyer 方法,您可以对所有 js 响应使用布局,如下所示:

应用程序.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 %>
于 2013-08-26T12:32:47.757 回答