#css #validation #ruby-on-rails-3.1
#css #проверка #ruby-on-rails-3.1
Вопрос:
Я использую вспомогательные методы Rails для создания формы и использую проверки.
Всякий раз, когда одна из этих проверок завершается неудачно, rails помещает соответствующие входные данные и метки в тег field_with_errors . И это нормально.
Однако по некоторым причинам rails переносит как ввод, так и метку в разные разделы, что делает стилизацию действительно сложной:
например:
<div class="field">
<div class="field_with_errors">...label...</div>
<div class="field_with_errors">..input ...</div>
</div>
и что мне нужно, так это:
<div class="field">
<div class="field_with_errors">...label amp; input...</div>
</div>
Кто-нибудь знает, как я мог бы этого добиться?
Ответ №1:
Один из способов — заменить divs на spans, которые не нарушают форматирование, поскольку они не являются элементами уровня блока. Для этого поместите это где-нибудь в инициализатор:
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
"<span class="field_with_errors">#{html_tag}</span>".html_safe
end
Другим способом было бы просто заставить исходные divs не отображаться как элементы уровня блока, используя эту строку в вашем файле CSS:
.field_with_errors { display: inline-block; }
но это не полностью поддерживается некоторыми старыми браузерами (глядя на вас IE6 и 7).
Комментарии:
1. Спасибо. Этот вариант с экранирующими двойными кавычками работает. Это railscasts.com/episodes/39-customize-field-error больше не работает…