2013-08-04 3 views
0

В настоящее время это код, у меня есть для создания нового сообщения:Rails: Как распечатать сообщение об ошибке с помощью Ajax JQuery?

if @message.save 
    respond_to do |format| 
     format.html { redirect_to messages_path } 
     format.js 
    end 
    else 
    flash[:notice] = "Message cannot be blank!" 
    redirect_to :back 
    end 

Как я получаю такое же сообщение для печати в Ajax? Также хотелось бы контролировать форматирование и положение.

ответ

2

В контроллер ПРИМЕНЕНИЕ

after_filter :add_flash_to_header 

    def add_flash_to_header 
    # only run this in case it's an Ajax request. 
    return unless request.xhr? 

    # add different flashes to header 
    response.headers['X-Flash-Error'] = flash[:error] unless flash[:error].blank? 
    response.headers['X-Flash-Warning'] = flash[:warning] unless flash[:warning].blank? 
    response.headers['X-Flash-Notice'] = flash[:notice] unless flash[:notice].blank? 
    response.headers['X-Flash-Message'] = flash[:message] unless flash[:message].blank? 

    # make sure flash does not appear on the next page 
    flash.discard 
    end 

Переместить уведомления кода в частичном:

<div class="noticesWrapper"> 
    <% flash.each do |name, msg| %> 
    <div class="alert alert-<%= name == :notice ? "success" : "error" %>"> 
     <a class="close" data-dismiss="alert"><i class="icon-remove"></i></a> 
     <%= msg %> 
    </div> 
    <% end %> 
</div> 

В js.erb файла:

$('.noticesWrapper').html("<%= j(render partial: 'layouts/flash_notices') %>");

В действии контроллера необходимо выдавать сообщения с flash.now:

flash.now[:error] = "your message"

Смежные вопросы