我对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加载有问题。我必须以某种方式在app.js中检查是否已加载ajax,然后运行noty_load()。当我签入Firebug时,我看到了闪光通知,但没有页面重新加载就没有看到它。发出Ajax请求时如何运行noty_load?
呼叫noty_load()
就在create.js.erb结束。如果要使用DRyer方法,则可以对所有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 %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句