Mensagem De Erro De Validação Em Rails Como Um Helper

Estava eu tentando deixar mais dry meu código quando encontrei esse Episodio no asciicasts

Por padrao o rails gera mais ou menos isso dentro de cada form:

1
2
3
4
5
6
7
8
9
10
<% if @objeto.errors.any? %>  
  <div id="errorExplanation">
    <h2><%= pluralize(@objeto.errors.count, "error") %> prohibited this objeto from being saved:</h2>  
    <ul>  
    <% @objeto.errors.full_messages.each do |msg| %>  
      <li><%= msg %></li>
    <% end %>  
    </ul>
  </div>  
  <% end %>

Ai eu disse nossa que maravilha esse episodio. Só que pensando um pouco mais: Hum vou ter que criar uma pasta e depois uma view para fazer isso em meus projetos e ainda assim chamar dentro de cada form:

<%= render "shared/error_messages", :target => @user %>

Dai eu disse: Hum vou fazer um helper para isso e chama-lo em cada form:

1
2
3
4
5
6
7
8
9
10
11
12
13
def error_messages_for(target)       
  html = ""
  if target.errors.any?         
      html << "<div id='error_explanation'>
     <h2>#{pluralize(target.errors.count, 'error')} prohibited this record from being saved:</h2>  
     <ul>"
      target.errors.full_messages.each do |msg|
          html << "<li>#{msg}</li>"
      end
      html << "</ul></div>"
  end
  html.html_safe
end

Coloquei o nome de error_messages_for por que foi retirado do rails 3 senão me engano, bom alguem ja deve ter feito isso, mas fica ai a dica. Simples e fácil lol.

Comments