2011-02-28 79 views
0

我想知道是否有一种方法来显示所有的信息错误给定对象在轨道3。例如,在这里我的验证(插件):Rails 3 - 显示给定方法的所有消息错误?

validates_presence_of :email, :message => "Your Email can't be blank" 
validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i 

将被显示在查看这样的:

Your Email can't be blank 
Email is invalid 

如果我使用error_message_on(@user,:电子邮件)我会得到的第一个消息的错误,所以我 开始有创建一个循环,并提取相关的方法(例如@user .email)这是正确的方式吗?

编辑

这几乎达到它:

<ul> 
    <%= @user.errors.on(:email).each do |msg| %> 
    <li><%= msg %></li> 
    <% end %> 
</ul> 

但它也返回数组,我如何管理呢?

Your Email can't be blank 
is invalid 
["Your Email can't be blank", "is invalid"] 

谢谢!

+0

实际上解析'errors'的对象是一个好办法。你可以写一些小帮手,它会是ENOGH – fl00r 2011-02-28 13:19:18

+0

所以我会继续这:)谢谢! – benoitr 2011-02-28 13:25:17

+0

我不明白你在做什么;我删除了我的答案。 – 2011-02-28 22:13:31

回答

1
<ul> 
    <% @user.errors.on(:email).each do |msg| %> 
    <li><%= msg %></li> 
    <% end %> 
</ul> 

,并作为帮手:

def display_all_error_messages(object, method) 
    list_items = object.errors[method].map { |msg| content_tag(:li, msg) } 
    content_tag(:ul, list_items.join.html_safe) 
end