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

dans plusieurs de mes controllers, j'ai redirects / flash messages

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

dans le controller de mes sessions, cependant, après authentification réussie, j'ai flash[:réussite] = "bienvenue!" redirect_to utilisateur

j'aimerais pouvoir dans mes autres controllers faire quelque chose comme :succès => "yay!!!"

ceci est principalement pour des raisons de cosmétique / cohérence, mais sont: avis,: alerte et: erreur les seuls types flash disponibles / puis-je ajouter des types supplémentaires? Suis-je logique?

Merci!

26
demandé sur mu is too short 2011-09-28 08:28:55

3 réponses

je crois que sans changements, c'est aussi proche que vous obtiendrez:

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

En voici notes supplémentaires concernant l'ajout de la syntaxe amicale flash.

53
répondu tlbrack 2017-11-03 19:59:17

je viens de découvrir que dans les Rails 4 Vous pouvez enregistrer des types personnalisés dans le contrôleur 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 %>

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

10
répondu luigi7up 2014-04-05 09:40:46

si vous voulez accéder à différents types de styles de messages flash basés sur bootstrap alert (success and warning), dans votre controller:

flash[:success] = "This works!"

et dans votre mise en page (très probablement application.HTML.erb)

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

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

0
répondu Guillaume Bihet 2018-02-04 07:33:11