ruby-on-rails 如何使用Haml和Rails实现数据属性?

jjjwad0x  于 2023-03-24  发布在  Ruby
关注(0)|答案(3)|浏览(146)

我可以

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

它给我的是下划线而不是破折号

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

但是,我希望有HTML 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 '}'
fhity93d

fhity93d1#

试试这个:

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

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

有关更多详细信息,请参阅此处
您也可以使用在线提供的**html2haml converter**

编辑:

正如在评论中提到的,还有几种语法可以使用

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

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

我仍然更喜欢前两个,虽然我认为后两个看起来丑陋和有点混乱。

uqdfh47h

uqdfh47h2#

在haml中使用{ ... }样式真的没有太大的必要。HTML样式属性是一种更灵活和自然的html生成方式。

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

不需要逗号,不需要哈希火箭等。您也可以非常容易地插入或直接分配变量,而无需切换样式。
例如:

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

其中linkid是当前绑定范围中的变量。
值得注意的是,你也可以无缝地包含来自xmlns的属性,svg生成使用了很多命名空间前缀,例如:

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

没有令人信服的理由使用另一种风格。

oknwwptz

oknwwptz3#

像这样的东西应该工作得很好:
%a{ "data-user-id" => "#{@user.id}" }

相关问题