wake-up-neo.com

Wie mache ich Datenattribute mit haml und Rails?

Ich kann haben

%a{href: '#', data_toggle_description_length: 'toggle_me_ajax'}

was es gibt mir Unterstriche keine Bindestriche, d.h.

<a href="#" data_toggle_description_length="toggle_me_ajax"></a>

Ich möchte jedoch HTML5 data- Attribute, d.h.

<a href="#" data-toggle-description-length="toggle_me_ajax"></a>

aber wenn ich versuche, Unterstriche durch Bindestriche zu ersetzen, d.h.

%a{href: '#', data-toggle-description-length: 'toggle_me_ajax'}

Ich bekomme Syntaxfehler:

/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 '}'
27
Michael Durrant

Versuche dies:

%a{"data-toggle-description-length" => "toggle_me_ajax", href: "#"}

[~ # ~] oder [~ # ~]

%a{href: "#", :data => {:toggle_description_length => "toggle_me_ajax"}}

Weitere Einzelheiten finden Sie unter hier

Sie können auch html2haml converter online verwenden

EDIT:

Wie in den Kommentaren erwähnt, gibt es ein paar weitere Syntaxen, die funktionieren würden

 %a{href: "#", { "data-toggle-description-length": "toggle_me_ajax" }}

OR

%a{href: "#", { :"data-toggle-description-length" => "toggle_me_ajax" }}

Ich würde die ersten beiden trotzdem bevorzugen, da ich denke, dass letztere hässlich und irgendwie chaotisch aussehen.

57
Mandeep

Es gibt wirklich nicht viel zu verwenden, { ... } style in haml. HTML-Stilattribute sind eine flexiblere und natürlichere Methode für die HTML-Generierung.

%a(href="#" data-toggle="target") my link

Es sind keine Kommas, keine Hash-Raketen usw. erforderlich. Sie können Variablen auch sehr einfach interpolieren oder direkt zuweisen, ohne die Stile zu wechseln.

z.B.

%a(href=link data-toggle="#{id}-toggle")

Dabei sind link und id Variablen aus dem aktuell gebundenen Bereich.

Insbesondere können Sie auch Attribute aus xmlns nahtlos einbinden. Die SVG-Generierung verwendet viele Namespace-Präfixe, zum Beispiel:

%link(xlink:type="simple" xlink:href=link)

Es gibt keinen zwingenden Grund, einen anderen Stil zu verwenden.

7
ocodo