Я працюю з Rails 5 та Materialize-Sass, і я отримую деякі проблеми з поведінкою за замовчуванням від Rails для лікування невдалої перевірки поля, як на зображенні нижче, і це було через додаткові div
додані до полів вводу, де перевірка не вдалася.
Робота з відповіддю @Phobetron і модифікація відповіді Уго Демільо. Я вніс деякі корективи в ці блоки коду, і я можу щось добре працювати в таких випадках:
- Якщо і те,
input
і інше label
є свій class
атрибут
<input type="my-field" class="control">
<label class="active" for="...">My field</label>
- Якщо
input
або або label
теги не мають class
атрибута
<input type="my-field">
<label for="...">My field</label>
- якщо в
label
тезі є інший тег всерединіclass attribute
<label for="..."><i class="icon-name"></i>My field</label>
У всіх цих випадках error
клас буде додано до існуючих класів в class
атрибуті при наявності або він буде створений , якщо він не присутній в етикетці або введення тегів.
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
class_attr_index = html_tag.index('class="')
first_tag_end_index = html_tag.index('>')
# Just to inspect variables in the console
puts '😎 ' * 50
pp(html_tag)
pp(class_attr_index)
pp(first_tag_end_index)
if class_attr_index.nil? || class_attr_index > first_tag_end_index
html_tag.insert(first_tag_end_index, ' class="error"')
else
html_tag.insert(class_attr_index + 7, 'error ')
end
# Just to see resulting tag in the console
pp(html_tag)
end
Я сподіваюся, що це може бути корисним для тих, хто має такі самі умови, як я.