2011-09-28 8 views
25

In molti dei miei controllori, ho reindirizzamenti/messaggi flashruby ​​on rails messaggi flash -: avviso: errore: avviso e: successo?

redirect_to products_url, :notice => "message here", 
redirect_to states_url, :error => "oops!" etc... 

Nel mio controller sessioni, tuttavia, dopo l'autenticazione, ho Flash [: successo] "! Benvenuto" = redirect_to utente

Mi piacerebbe essere in grado in altri miei controller di fare qualcosa come : success => "yay!"

Questo è principalmente per scopi cosmetici/consistenza, ma sono: avviso,: avviso e: errore gli unici tipi di flash disponibili/posso aggiungere altri tipi? Ho un senso?

Grazie!

risposta

52

credo senza cambiamenti, questo è il più vicino si arriva:

redirect_to user_path(@user), :flash => { :success => "Message" } 

Ecco alcuni additional notes per quanto riguarda l'amichevole aggiunta sintassi di flash.

9

ho appena scoperto che in Rails 4 è possibile registrare i tipi personalizzati nel controller di app:

class ApplicationController 
    ... 
    add_flash_types :error, :another_custom_type 
end 

# app/controllers/users_controller.rb 
class UsersController < ApplicationController 
    def create 
    ... 
    redirect_to home_path, 
     error: "An error message for the user" 
    end 
end 

# app/views/home/index 
<%= error %> 

Il merito va a http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-rails-4-countdown-to-2013

0

Se si desidera accedere a diversi tipi di messaggi istantanei stili basano su bootstrap alert (successo e di allarme), in voi controllore:

flash[:success] = "This works!" 

e nel layout (molto probabilmente application.html.erb)

<% if success.present? %> 
     <p class="alert alert-success"><%= success %></p> 
    <% end %> 

Stessa cosa con avvisi e altri stili di avviso di bootstrap.