rails和html数据属性:使用短划线( - )或下划线(_)?

时间:2013-03-05 16:27:18

标签: jquery html ruby-on-rails html5 custom-data-attribute

最近,我在rails应用程序中遇到了HTML自定义数据属性的问题。我使用以下模式为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"));

在我的开发环境中,它很顺利,我得到了预期的结果(过去我的生产环境也是如此),但在我当前的生产版本中,我得到了“未定义”的值。 我检查了页面的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" />

为什么会这样?导致变化的原因是什么?

3 个答案:

答案 0 :(得分:13)

这是完全正常的,data: { first_name: "ben" }应该产生data-first-name="ben"

您访问此属性的最佳方式是使用.data("firstName"),但.data("first-name")也可以使用。

答案 1 :(得分:4)

我认为你使用的是HAML。自4.0以来,Hypernation是默认的。将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

答案 2 :(得分:0)

经过测试我做了:似乎在开发中我在版本3.2.9中有宝石,在生产中它是3.2.12 - 错误的行为(转换为<a date-last_name/>)在这些版本之间被修复,之后升级我的开发版本我可以看到变化。