Как сделать атрибуты данных с haml и rails?
Я могу иметь
%a{href: '#', data_toggle_description_length: 'toggle_me_ajax'}
который он мне дает, подчеркивает не тире, т.е.
<a href="#" data_toggle_description_length="toggle_me_ajax"></a>
Однако я хочу иметь атрибуты HTML5 data-
, т.е.
<a href="#" data-toggle-description-length="toggle_me_ajax"></a>
но когда я пытаюсь заменить символы подчеркивания тире, т.е.
%a{href: '#', data-toggle-description-length: 'toggle_me_ajax'}
Я получаю синтаксические ошибки:
/home/durrantm/Dropnot/webs/rails_apps/linker/app/views/links/_links.html.haml:13: syntax error, unexpected tLABEL
...data-toggle-description-length: 'toggle_me_ajax')}>\n tog...
... ^
/home/durrantm/Dropnot/webs/rails_apps/linker/app/views/links/_links.html.haml:13: syntax error, unexpected ')', expecting '}'
...ption-length: 'toggle_me_ajax')}>\n toggleMeAjax\n </a>\...
... ^
/home/durrantm/Dropnot/webs/rails_apps/linker/app/views/links/_links.html.haml:13: unknown regexp options - pa
/home/durrantm/Dropnot/webs/rails_apps/linker/app/views/links/_links.html.haml:13: syntax error, unexpected $undefined
... toggleMeAjax\n </a>\n</span>\n", -1, false);::Haml::Util.h...
... ^
/home/durrantm/Dropnot/webs/rails_apps/linker/app/views/links/_links.html.haml:13: unterminated string meets end of file
/home/durrantm/Dropnot/webs/rails_apps/linker/app/views/links/_links.html.haml:13: syntax error, unexpected $end, expecting '}'
Ответы
Ответ 1
Попробуйте следующее:
%a{"data-toggle-description-length" => "toggle_me_ajax", href: "#"}
ИЛИ
%a{href: "#", :data => {:toggle_description_length => "toggle_me_ajax"}}
Подробнее см. здесь
Вы также можете использовать html2haml converter, доступные онлайн
EDIT:
Как уже упоминалось в комментариях, есть еще несколько синтаксисов, которые будут работать
%a{href: "#", { "data-toggle-description-length": "toggle_me_ajax" }}
ИЛИ
%a{href: "#", { :"data-toggle-description-length" => "toggle_me_ajax" }}
Я бы предпочел первые два, хотя, как мне кажется, последние выглядят уродливо и любопытно.
Ответ 2
В haml действительно не нужно использовать стиль { ... }
. Атрибуты стиля HTML являются более гибким и естественным способом генерации html.
%a(href="#" data-toggle="target") my link
Никаких запятых, никаких хеш-ракет и т.д. не требуется. Вы также можете легко интерполировать или напрямую назначать переменные без переключения стилей.
например.
%a(href=link data-toggle="#{id}-toggle")
Где link
и id
являются переменными из текущей привязанной области.
В частности, вы можете легко включать атрибуты из xmlns, генерация svg использует множество префиксов пространства имен, например:
%link(xlink:type="simple" xlink:href=link)
Нет никаких оснований для использования другого стиля.