Рельсы и атрибуты данных html: используйте тире (-) или подчеркивание (_)? - программирование
Подтвердить что ты не робот

Рельсы и атрибуты данных html: используйте тире (-) или подчеркивание (_)?

В последнее время у меня возникают проблемы с атрибутами пользовательских данных HTML в приложении rails. Я использую следующий шаблон, чтобы добавить некоторые атрибуты данных в теги html и использовать их позже в моем javascript (jQuery) коде:

= %a.name{ href: "url.com", data: {first_name: "ben", last_name: "amsalem} }

В коде javascript я получаю доступ к этим атрибутам:

alert($(".name").data("first_name") + " " + $(".name").data("last_name"));

В моей среде разработки все идет хорошо, и я получаю ожидаемый результат (то же самое верно для моей производственной среды в прошлом), но в моей текущей производственной версии я получаю значения "undefined". Я проверил источник HTML страницы, и я увидел, что у меня теперь есть что-то вроде:

<a class="name" href="url.com" data-first-name="ben" data-last-name="amsalem" />

Вместо:

<a class="name" href="url.com" data-first_name="ben" data-last_name="amsalem" />

Почему это происходит? Что вызывает изменение?

4b9b3361

Ответ 1

После тестов, которые я сделал: похоже, в разработке у меня были драгоценные камни в версии 3.2.9, а в производстве было 3.2.12 - было исправлено неправильное поведение (преобразование в <a date-last_name/>) между этими версиями и после обновления моего версия разработки Я вижу изменения.

Ответ 2

Это нормально нормально, data: { first_name: "ben" } должен создавать data-first-name="ben".

Лучший способ доступа к этому атрибуту - .data("firstName"), но .data("first-name") также будет работать.

Ответ 3

Я полагаю, что вы используете HAML. Hypernation устанавливается как значение по умолчанию с 4.0. Установите для параметра hyphenate_data_attrs значение false, чтобы отключить его.

Документация: http://haml.info/docs/yardoc/Haml/Options.html#hyphenate_data_attrs-instance_method

Оригинальная дискуссия по github: https://github.com/haml/haml/pull/488