Rails 3.1 - Поля с ошибками - PullRequest
       2

Rails 3.1 - Поля с ошибками

2 голосов
/ 02 октября 2011

Я использую вспомогательные методы Rails для построения формы и использую валидации.

Всякий раз, когда одна из этих проверок завершается неудачей, rails оборачивает соответствующие входные данные и метки в тег field_with_errors. Что хорошо.

Однако, по некоторым причинам, rails оборачивает как ввод, так и метку в разные элементы div, делая создание стиля действительно трудным:

например:

<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 & input...</div>
</div>

Кто-нибудь знает, как мне этого добиться?

1 Ответ

8 голосов
/ 02 октября 2011

Один из способов - заменить div на span, которые не нарушают форматирование, поскольку они не являются элементами блочного уровня. Для этого поместите это где-нибудь в инициализаторе:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  "<span class=\"field_with_errors\">#{html_tag}</span>".html_safe 
end

Другим способом было бы просто сделать так, чтобы исходные элементы div не отображались как элементы уровня блока, с этой строкой в ​​вашем файле CSS:

.field_with_errors { display: inline-block; }

, но это не полностью поддерживается некоторыми старыми браузерами (глядя на вас IE6 и 7).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...