Ruby on rails 3 如何使用Ajax和Jquery在Rails3中显示flash错误消息?

Ruby on rails 3 如何使用Ajax和Jquery在Rails3中显示flash错误消息?,ruby-on-rails-3,Ruby On Rails 3,我的控制器创建函数是 def create @group = Group.new(params[:group]) @group.company=current_user.company respond_to do |format| if @group.save format.html { redirect_to(@group, :notice => 'Group was successfully created.') } format.js

我的控制器创建函数是

def create
  @group = Group.new(params[:group])
  @group.company=current_user.company
  respond_to do |format|
    if @group.save
      format.html { redirect_to(@group, :notice => 'Group was successfully created.') }
      format.js
    else
      flash.now[:error]=@group.errors.full_messages
      format.html { render :nothing => true }
      format.js
    end
  end
end
create.js.erb文件是

$('<%= escape_javascript(render(:partial => @group))%>').appendTo('#groups');
$("#new_group")[0].reset();
$('@group))%>')。附加到('#groups');
$(“#新#组”)[0]。重置();

当页面最初加载时,为flash创建一个div:

<div class="flash-error"></div>

在js.erb文件中为flash设置javascript变量。然后检查值并使用javascript更新“flash error”div。它可能看起来像这样:

$('<%= escape_javascript(render(:partial => @group))%>').appendTo('#groups');
$("#new_group")[0].reset();
var flashError = "<%=flash.now[:error]%>";
if (flashError){
  $(".flash-error").html(flashError);
}
$('@group))%>')。附加到('#groups');
$(“#新#组”)[0]。重置();
var闪光器=”;
if(闪光器){
$(“.flash error”).html(flashError);
}

这是我对这个问题的解决方案。。。。 我把这些放在我所有的js.erb文件中

$('#flash').html("<%= escape_javascript raw(flash_display) %>");
这与布局中已经设置的flashdiv配合得很好

<div id="flash">
  <% flash.each do |name, msg| %>
    <%= content_tag :div, msg, :id => "flash_#{name}" %>
  <% end %>
</div>

“flash{name}”%>

希望这有帮助

请将您的代码放入代码标记({}符号)
<div id="flash">
  <% flash.each do |name, msg| %>
    <%= content_tag :div, msg, :id => "flash_#{name}" %>
  <% end %>
</div>