Можно ли привязать "поля с ошибками" к родительскому элементу входного тега, который вызывает ошибку?

Итак, у меня есть элемент ввода, подобный этому. Элемент обертывания - это, знаете ли, визуальная вещь.

<div class="input-wrap">
  <input class="blah-blah" />
</div>

Когда <input> содержит ошибку, это будет следующим образом:

<div class="input-wrap">
  <div class="field-with-errors">
    <input class="blah-blah" />
  </div>
</div>

Но я хочу сделать следующее:

<div class="input-wrap field-with-errors">
  <input class="blah-blah" />
</div>

Я нашел эту страницу, это очень близко к моему вопросу

Рельсы 3: с полем с ошибками " обертка изменяет внешний вид страницы. Как этого избежать?

Теперь я знаю, что могу бросить

config.action_view.field_error_proc = Proc.new { |html_tag, instance| 
   "#{html_tag}".html_safe
}

чтобы избежать обертывания тега вокруг тега <input> с ошибкой. Но то, что я действительно хочу сделать, снова добавляет класс "field-with-errors" в прямой родительский элемент тега <input>. Я могу это сделать? Поддерживает ли ActionView древовидную структуру узлов DOM?

4b9b3361

Вы можете поместить код для обработки ошибок везде, где захотите, просто назовите его как блок для переменной экземпляра, например

if @instance.errors.any?
  <div class="field with errors">
  @instance.errors.full_messages.each do |msg|
    <p><%= msg %></p>
  end
end

Если вам это очень нравится, полезно вытащить его в помощник и передать переменную экземпляра в качестве параметра.

-2
ответ дан 26 марта '13 в 6:08
источник