State usando l'helper flash dalla twitter-bootstrap-rails gemma di seyhunak. Invece di usare l'helper, puoi impostare tu stesso il codice e vedere come funziona tutto.
Ecco come ho impostato i messaggi flash di Rails con Twitter Boostrap.
Rails utilizza: avviso e: avviso come messaggio flash. Twitter Bootstrap fornisce una classe base .alert con classi aggiuntive .alert-success e .alert-error (consultare la documentazione Bootstrap sugli avvisi). È necessario un po 'di analisi per ottenere un messaggio di "avviso" di Rails da abbinare allo stile "alert-success" di Bootstrap di Twitter. Qualsiasi altro messaggio, incluso un messaggio di "avviso" di Rails, sarà in stile con lo stile "alert-error" di Bootstrap di Twitter.
Per impostazione predefinita, Twitter Bootstrap applica uno sfondo verde a .alert-success e uno sfondo rosso a .alert-error. Twitter Bootstrap fornisce informazioni di terza classe .alert con sfondo blu. Con un po 'di hacking, è possibile creare un messaggio flash Rails con un nome personalizzato, ad esempio: info, che verrà visualizzato con la classe Bootstrap .alert-info. Tuttavia, è consigliabile attenersi alla convenzione Rails di utilizzare solo "alert" e "notice". Le versioni precedenti di Rails utilizzavano "error", ma la pratica corrente è di usare "alert" invece di "error".
È possibile includere il codice per visualizzare i messaggi flash direttamente nel file di layout dell'applicazione oppure è possibile creare un parziale. Ecco un esempio con un parziale.
In primo luogo, ciò che accade nel layout dell'applicazione:
# app/views/layouts/application.html.erb
.
.
.
<%= render 'layouts/messages' %>
.
.
.
Avanti, parziale che viene incluso nel layout dell'applicazione:
# app/views/layouts/_messages.html.erb
# Rails flash messages styled for Bootstrap 3.0
# works with Rails 4.0 or Rails 4.1
<% flash.each do |name, msg| %>
<% if msg.is_a?(String) %>
<div class="alert alert-<%= name.to_s == 'notice' ? 'success' : 'danger' %>">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
<%= content_tag :div, msg, :id => "flash_#{name}" %>
</div>
<% end %>
<% end %>
E un esempio di impostazione due diversi messaggi flash in un controller:
class VisitorsController < ApplicationController
def new
flash[:notice] = 'Welcome!'
flash[:alert] = 'My birthday is soon.'
end
end
Questo esempio viene da un articolo approfondito che ho scritto:
Twitter Bootstrap and Rails
Per un'alternativa che può ospitare quattro diversi tipi di messaggi flash (buon fine, errore, avviso, comunicazione), vedere un esempio di Rails Flash Messages using Twitter Bootstrap.
https://gist.github.com/suryart/7418454 –