Отображение ошибок проверки рядом с полем
Есть ли способ показать ошибки не поверх страницы формы, но рядом с полем, в котором была ошибка?
Ответы
Ответ 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"> #{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"> #{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 вашего макета. Если вы переместите этот код, чтобы проверить наличие ошибок в вашем хеше в каждом поле, вы можете выполнить то, что хотите.
Ответ 5
<td class="error"><%[email protected][:firstname].join(",") %></td>