如何使用Ajax和Jquery在Rails 3中显示Flash错误消息?

| 我的控制器创建功能是
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();
已邀请:
这是我对这个问题的解决方案。 我把这些放在我所有的js.erb文件中
$(\'#flash\').html(\"<%= escape_javascript raw(flash_display) %>\");
有了这个助手
def flash_display
  response = \"\"
  flash.each do |name, msg|
    response = response + content_tag(:div, msg, :id => \"flash_#{name}\")
  end
  flash.discard
  response
end
与已经在布局中设置的Flash div配合使用时效果很好
<div id=\"flash\">
  <% flash.each do |name, msg| %>
    <%= content_tag :div, msg, :id => \"flash_#{name}\" %>
  <% end %>
</div>
希望这可以帮助
最初加载页面时,为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);
}

要回复问题请先登录注册