14

Sto provando a impostare le notifiche flash nel controller ma sembra che posso solo definire: avviso. Quando provo a definire: errori o flash [: errori] ho ricevuto un sacco di errori. Al momento ho questo funzionamento, ma tutti i messaggi sono ovviamente un tipo di avviso e non un errore o un avviso. Voglio sapere come impostare un errore o un avviso al posto di un avviso. Sto usando le rotaie 3.2 e rotaie Twitter bootstrap gemmaCome definire le notifiche Flash con Twitter Bootstrap Rails gemma

in application.html.erb

<%= bootstrap_flash %> 

in manuals_controller.rb

class ManualsController < ApplicationController 
    def create 
    respond_to do |format| 
     format.html { redirect_to root_url, notice:'MyManual was successfully created.' } 
    end 
    end 
end 
+1

https://gist.github.com/suryart/7418454 –

risposta

28

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">&times;</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.

+0

quando ho apportato le modifiche sopra ho ricevuto un errore "Impossibile convertire il simbolo in stringa". Grazie per aver spiegato la tua risposta iniziale a fondo. – barnett

+1

Ecco un link al mio [Rails Bootstrap] (https: // github.com/RailsApps/rails-bootstrap) app di esempio su GitHub che contiene il codice del messaggio flash. Può aiutare a clonare l'esempio e controllarlo come un'implementazione di riferimento. –

+0

E se volessi farlo funzionare con ajax? – barnett

Problemi correlati