2011-09-28 104 views
25

En varios de mis controladores, tengo redirecciones/mensajes flashruby ​​on rails mensajes flash -: alerta: error: aviso y: ¿éxito?

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

En mi controlador de sesiones, sin embargo, si la autenticación tiene éxito, tengo rápida [: éxito] "Bienvenidos" = redirect_to usuario

Me gustaría poder utilizar mis otros controladores para hacer algo como : success => "yay!"

Esto es principalmente para fines cosméticos y de consistencia, pero son: aviso,: alerta y: error los únicos tipos de flash disponibles/¿Puedo agregar tipos adicionales? ¿Estoy teniendo sentido?

Gracias!

Respuesta

52

creo sin cambios, esto es lo más cerca que obtendrá:

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

He aquí algunos additional notes con respecto a la adición de usar la sintaxis de flash.

9

Me acabo de enterar que en los carriles 4 puede registrar tipos personalizados en el controlador de aplicación:

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 %> 

El mérito va a http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-rails-4-countdown-to-2013

0

Si desea acceder a diferentes tipos de mensajes flash estilos basan en de arranque de alerta (éxito y la alerta), en el que el controlador:

flash[:success] = "This works!" 

y en su diseño (muy probablemente application.html.erb)

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

Lo mismo con advertencia y otros estilos de alerta de arranque.