仅显示一次错误消息的属性
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 %>
在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 %>