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

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

Есть ли способ показать ошибки не поверх страницы формы, но рядом с полем, в котором была ошибка?

4b9b3361

Ответ 1

инициализаторы /my _custom_error_messages.rb

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  errors = Array(instance.error_message).join(',')
  %(#{html_tag}<span class="validation-error">&nbsp;#{errors}</span>).html_safe
end

обновление:

без метки

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  errors = Array(instance.error_message).join(',')

  if html_tag =~ /^<label/
    html_tag
  else
    %(#{html_tag}<span class="validation-error">&nbsp;#{errors}</span>).html_safe
  end

end

ref: рельсы

Ответ 2

Вы можете использовать simple_form gem, чтобы показать ошибку проверки с полями

   <%= simple_form_for @user do |f| %>
       <%= f.input :username %>
       <%= f.input :password %>
       <%= f.button :submit %>
   <% end %>

И если вы хотите показать ошибку проверки в верхней части формы, используйте

    object.error_messages

После тега формы

Ответ 3

Это было частью Rails, теперь оно доступно в драгоценном камне:

https://github.com/joelmoss/dynamic_form

Он позволяет легко отображать ошибки для любого конкретного атрибута объекта компоновщика форм, например:

<%= f.text_field :foo %>
<%= f.error_message_on :foo %>

Ответ 4

Ошибки отображаются в верхней части формы из-за итерации @model.errors в верхнем div вашего макета. Если вы переместите этот код, чтобы проверить наличие ошибок в вашем хеше в каждом поле, вы можете выполнить то, что хотите.