【问题标题】:Display attribute of error messages only once错误信息的属性只显示一次
【发布时间】:2017-03-10 09:15:02
【问题描述】:

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

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

但我想将其修改为这种格式:

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

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

【问题讨论】:

    标签: ruby-on-rails custom-errors


    【解决方案1】:

    您需要更改用于打印错误的 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
    

    【讨论】:

    • 但是我怎样才能显示其他语言的属性,比如日本语?
    • 利用I18n &lt;%= t(:attribute) %&gt;
    【解决方案2】:

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

    # 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 %>
    

    【讨论】:

    • 但是我怎样才能显示其他语言的属性,比如日本语?
    猜你喜欢
    • 2022-01-01
    • 2022-01-14
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多