为什么连字符在类似JS的语法中对于Ruby中的哈希无效

时间:2014-07-06 03:04:36

标签: ruby

通过Hartl的Rails教程,他提到了:

stylesheet_link_tag "application", { media: "all",
                                 "data-turbolinks-track" => true } 

有效

stylesheet_link_tag "application", { media: "all",
                                 data-turbolinks-track: true }

无效,因为"因连字符而无效。"任何人都能为我进一步解释这个吗?为什么连字符使这个无效?

2 个答案:

答案 0 :(得分:1)

冒号哈希语法不支持所有符号。有时您必须使用hashrockets。看看here

foo: true归结为:foo => true。在符号中,必须像以下那样对短划线进行转义::'foo-bar'foo-bar: true无效,因为:foo-bar => true也不是。

答案 1 :(得分:0)

这是因为连字符可以解释为减号,这就是变量名不能包含连字符的原因。我想你可以这样做::'data-turbolinks-track' =>

我知道如果你想把奇怪的字符放在符号中,你可以这样做::'a-symbol^with#weird+:symbols'。这基本上意味着在字符串中包装符号,除了':'当把不寻常的字符放在其中时。