Rails 3 - 显示给定方法的所有消息错误?

时间:2011-02-28 12:57:43

标签: ruby-on-rails

我想知道是否有方法(插件?)显示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,:email)我会收到第一条消息错误,所以 我的开始必须创建一个循环并提取相关的方法(例如@ 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"]

谢谢!

1 个答案:

答案 0 :(得分: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