Exibindo mensagens no Rails


Leia em menos de um minuto

Sempre tive o costume de diferenciar as mensagens que exibo ao usuário em 4 tipos: info, notice, warning e error. Dessa forma, consigo exibir cada mensagem com formato visual diferente.

Exibindo mensagens para o usuário

No Rails é muito simples fazer isso. Basta colocar o método abaixo no arquivo "application_helper.rb".

module ApplicationHelper
  def flash_message
    messages = ""
    [:notice, :info, :warning, :error].each {|type|
      if flash[type]
        messages += "<p class=\"#{type}\">#{flash[type]}</p>"
      end
    }

    messages
  end
end

No seu controller, você define as mensagens utilizando o flash.

flash[:notice] = "Informações salvas com sucesso."
flash[:warning] = "Preencha todos os campos obrigatórios."
flash[:error] = "Não foi possível salvar as informações."
flash[:info] = "Você tem mensagens não visualizadas."

Na sua view basta você chamar o método da seguinte maneira:

<%= flash_message %>

Uma outra vantagem de utilizar este método é que caso nenhuma mensagem tenha sido definida, ele não exibe um elemento vazio na página.