Отображать атрибут сообщений об ошибках только один раз

В рельсах, когда атрибут имеет более 1 ошибки, сообщения об ошибках будут выглядеть следующим образом:

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

Но я хочу изменить его на этот формат:

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

Кто-нибудь знает, как это сделать, пожалуйста, помогите мне. Спасибо, ребята.


person Long Lý    schedule 10.03.2017    source источник


Ответы (2)


Вам нужно будет изменить 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
person Deepak Mahakale    schedule 10.03.2017
comment
но как я могу отобразить атрибут на другом языке, например на японском? - person Long Lý; 10.03.2017
comment
Используйте I18n <%= t(:attribute) %> - person Deepak Mahakale; 10.03.2017

Предположительно, в настоящее время вы используете что-то вроде этого для отображения сообщений об ошибках:

# 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 %>
person gwcodes    schedule 10.03.2017
comment
но как я могу отобразить атрибут на другом языке, например на японском? - person Long Lý; 10.03.2017