Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么连字符在Ruby中类似JS的哈希语法中无效_Ruby - Fatal编程技术网

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

为什么连字符在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

在阅读Hartl的Rails教程时,他提到:

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中一个不成熟的命名参数实现。谢谢——链接的解释确实很有帮助。听起来很多都很特别,不客气。如果你在网上找到任何有帮助的答案,不要犹豫,投赞成票。