为什么连字符在Ruby中类似JS的哈希语法中无效
在阅读Hartl的Rails教程时,他提到:为什么连字符在Ruby中类似JS的哈希语法中无效,ruby,Ruby,在阅读Hartl的Rails教程时,他提到: stylesheet_link_tag "application", { media: "all", "data-turbolinks-track" => true } 有效 stylesheet_link_tag "application", { media: "all", data-turbolinks-t
stylesheet_link_tag "application", { media: "all",
"data-turbolinks-track" => true }
有效
stylesheet_link_tag "application", { media: "all",
data-turbolinks-track: true }
无效,因为“因连字符无效”。有人能为我进一步解释一下吗?为什么连字符使其无效 这是因为连字符可以解释为减号,这就是变量名不能包含连字符的原因。我认为您可以这样做:
:'data-turbolinks-track'=>
我知道如果你想在符号中添加奇怪的字符,你可以这样做:
:'a-symbol^和#weird+:symbols'
。这基本上意味着将符号包装在字符串中,除了“:”以外的字符。冒号哈希语法不支持所有符号。有时你必须使用hashrockets。看一看
foo:true
归结为:foo=>true
。在符号中,破折号必须像这样转义::'foo-bar'
foo-bar:true
无效,因为:foo-bar=>true
也无效 @muistooshort sorry没有注意到标记no,'data-turbolinks-track':true
将不起作用<代码>:'data-turbolinks-track'=>true,但是,将起作用。@muistooshort这是Rails/js/json特定的行为吗?我只知道Rails的基本知识,但公平地说,我记得,“text”:true
相当于:“text”=>true
。我认为它是在1.9版左右添加的,所以您编写的两个代码在Rails 3/4中都应该是有效的。不,语法根本不等效:。与Rails也没有任何关系,只是Ruby中一个不成熟的命名参数实现。谢谢——链接的解释确实很有帮助。听起来很多都很特别,不客气。如果你在网上找到任何有帮助的答案,不要犹豫,投赞成票。