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

use*_*828 2 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
    else
      flash.now[:error]=@group.errors.full_messages
      format.html { render :nothing => true }
      format.js
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

create.js.erb文件是

$('<%= escape_javascript(render(:partial => @group))%>').appendTo('#groups');
$("#new_group")[0].reset();
Run Code Online (Sandbox Code Playgroud)

the*_*eme 10

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

$('#flash').html("<%= escape_javascript raw(flash_display) %>");
Run Code Online (Sandbox Code Playgroud)

有了这个助手

def flash_display
  response = ""
  flash.each do |name, msg|
    response = response + content_tag(:div, msg, :id => "flash_#{name}")
  end
  flash.discard
  response
end
Run Code Online (Sandbox Code Playgroud)

这适用于已经在布局中设置的flash div

<div id="flash">
  <% flash.each do |name, msg| %>
    <%= content_tag :div, msg, :id => "flash_#{name}" %>
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助