Подтвердить что ты не робот

Формат сообщений полной версии Rails 3

Так как в Rails 3 form.error_messages устарел, я использую часть, в которой я перебираю full_messages и строю свой html следующим образом:

<% model.errors.full_messages.each do |msg| %>
  <p><%= msg %></p>
<% end %>

Однако локаль приложения по умолчанию не является английским, и на моем языке структура full_messages неестественна:

{{attribute}} {{message}}

Я видел из источника generate_full_messages, что я могу локализовать формат, и поэтому в моем yale файле locale (bg.yml) я добавил следующее:

bg:
 activerecord:
  errors:
   full_messages:
    format: "[...]"

Однако формат ошибок проверки остается прежним.

4b9b3361

Ответ 1

не знаю, может ли это помочь, но языковой файл для болгарского языка доступен в Github.

вы также можете попробовать это (должны работать в соответствии с направляющие rails):

bg:
  errors:
    format: "%{message}"
    messages: &error_messages
      empty: "Something something %{attribute} something something"

этот пост в блоге и этот проблема также говорят о странных {{attribute}} {{message}} структур. Кажется, это вызвано конфликтом между двумя камнями I18n, установленными на том же сервере.

Ответ 2

Измените текущий код

<% @object.errors.full_messages.each do |msg| %>
  <li><%= msg %></li>
<% end %>

С помощью этого

<% @object.errors.messages.values.each do |msg| %>
  <% msg.each do |m| %>
    <li><%= m %></li>
  <%end %>
<% end %>

И в вашей модели настройте сообщение:

validates :attribute, :presence => { :message => 'Attribute cannot be blank' }

Ответ 3

Возвращает все полные сообщения об ошибках для заданного атрибута в массиве.

@object.errors.full_messages_for (: имя)

= > [ "Имя слишком короткое (минимум 5 символов)", "Имя не может быть пустым" ]