web-dev-qa-db-fra.com

ruby on Rails flash messages -: alerte: erreur: avis et: succès?

Dans plusieurs de mes contrôleurs, j'ai des redirections/messages flash

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

Dans mon contrôleur de sessions, cependant, une fois l'authentification réussie, j'ai flash [: success] = "bienvenue!" redirect_to utilisateur

J'aimerais pouvoir, dans mes autres contrôleurs, faire quelque chose comme : succès => "yay!"

Ceci est principalement à des fins esthétiques/de cohérence, mais sont: notice,: alert et: error les seuls types de flash disponibles/puis-je ajouter des types supplémentaires? Est-ce que j'ai un sens?

Merci!

26
Chip

Je crois que sans changements, c'est aussi proche que possible:

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

Voici quelques notes supplémentaires concernant l'ajout de syntaxe flash conviviale.

53
tlbrack

Je viens de découvrir que dans Rails 4, vous pouvez enregistrer des types personnalisés dans le contrôleur d'application:

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

Le mérite revient à http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-Rails-4-countdown-to-2013

10
luigi7up

Si vous souhaitez accéder à différents types de styles de messages flash basés sur une alerte d'amorçage (succès et avertissement), dans votre contrôleur:

flash[:success] = "This works!"

Et dans votre mise en page (probablement application.html.erb)

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

Même chose avec avertissement et autres styles d'alerte bootstrap.

0
Guillaume Bihet