2013-07-18 16 views
5

se ho impostato un messaggio di convalida entro il mio modelloVisualizza messaggio di errore in Flash Rails Alert 3

validates :name, :presence => {:message => 'The name cant be blank.'} 

Come faccio ad avere quel messaggio di presentarsi in un avviso di flash, questo è quello che ho provato finora

def create 
    @message = Message.new(params[:message]) 
    if @message.valid? 
    ContactMailer.send_mail(@message).deliver 
    redirect_to(root_path, :notice => "Thanks for your message, I will be in touch soon") 
    else 
    flash[:error] = @message.errors 
    render :new 
    end 
end 

ma tutto quello che ottiene è una striscia messaggio di errore nera nella parte superiore della pagina senza testo in esso, nel mio layout/applicazione ho questo

<% flash.each do |name, msg| %> 
<div class="alert alert-<%= name == :notice ? "success" : "error" %>"> 
    <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %> 
</div> 

Tutti gli indicatori hanno apprezzato

risposta

9

Questo non è buona idea per mostrare gli errori di convalida attraverso il messaggio flash, ma se si ha realmente bisogno:

flash.now[:error] = @message.errors[:name].first 

si dovrebbe usare flash.now[:error] nel caso se è necessario mostrare messaggio immediatamente.

http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html#method-i-now http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-5B-5D

+0

Grazie voi, quindi se volevo avere più messaggi di errore mostrano farei una chiamata separata per ciascuno di essi? – Richlewis

+1

Inoltre puoi usare '@ message.errors [: name] .join (", ")' o '@ message.errors.full_messages.join (". ")' Per mostrare tutti i messaggi di validazione. Ma è meglio mostrare gli errori vicino ai campi (questo è più facile da usare), usare [semplice_form] (https://github.com/plataformatec/simple_form) gem, puoi vedere gli esempi nei documenti. – ole

+0

sì, inserirò un po 'di validazione js, mi sto solo esercitando con alcune cose sul lato server :) – Richlewis

Problemi correlati