仅显示一次错误消息的属性

Display attribute of error messages only once

在rails中,当一个属性有超过1个错误时,错误消息将显示为:

- Image size cant greater 1MB
- Image should be 1024x768 max

但是我想修改成这样的格式:

Image:
 -Cant greater 1MB
 -Should be 1024x768 max
when upload.

有谁知道怎么做,请帮帮我。谢谢你们。

您需要更改用于打印错误的 html

<% @image.errors.messages.each do |attribute, messages| %>
  <%= attribute.to_s.titleize %>
  <% messages.each do |message| %>
    <%= "- #{message}" %>
  <% end %>
<% end %>

这会给你输出:

Image:
 - Cant greater 1MB
 - Should be 1024x768 max

据推测,您目前正在使用类似这样的东西来呈现错误消息:

# erb
<% model.errors.full_messages.each |m| do %>
  <li><%= m %></li>
<% end %>

Rails 确实为您提供了 errors 中验证错误的详细细分,如果您选择使用它的话。例如:

model.errors[:image]
# => [ "can't be greater than 1MB", "should be 1024x768 max" ]

只会为您提供 image.

的错误

考虑到这一点,您可以尝试这样的操作:

# erb
<% model.errors.each do |attr, messages| %>
  <li>
    <%= attr %>:
    <ul>
      <% messages.each do |m| %>
        <li><%= m %></li>
      <% end %>
    </ul>
  </li>
<% end %>