Подтвердить что ты не робот

Как сделать атрибуты данных с 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 '}'
4b9b3361

Ответ 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)

Нет никаких оснований для использования другого стиля.