如何在Ruby符号中跳出破折号“ – ”?

我在Ruby On Rails上使用jquery-mobile。

我想创build一个button链接,这意味着在生成的HTML中出现data-role="button"

我试过了:

 <%= link_to "Play", game_play_path, :data-role => "button" %> 

但是,然后,我得到一个错误

 undefined local variable or method `role' for #<#<Class:0x007fdc25668ee8>:0x007fdc25658610> 

有没有办法使用:xxx符号来避开短划线,还是应该使用"xxx"符号?

(我同意这是一个化妆品的问题,但我希望我的代码是一致的,不喜欢例外)

使用冒号前缀在符号名称周围使用单引号:

 :'data-role' => 'button' 

这里是对符号的一个很好的参考:

http://www.troubleshooters.com/codecorn/ruby/symbols.htm#_What_do_symbols_look_like

如果你发现语法<%= link_to "Play", game_play_path, :"data-role" => "button" %>丑陋,因为它使用旧的哈希语法,另一种方法是使用ruby 1.9语法进行哈希是做到以下几点:

 <%= link_to "Play", game_play_path, data: {role: "button"} %> 

散列重叠在html输出中生成数据和angular色之间的连字符。

要小心,因为这只适用于数据属性,但在你的情况下,这是一个更令人愉快的select。

另外,如果你有更多的数据属性,你可以把它们写在嵌套的哈希中:

 <%= link_to "Play", game_play_path, data: {role: "button", other1: "value1", other2: "value2"} %> 

用单引号把它包起来:

 :'data-role' => "button" 
 <%= link_to "Play", game_play_path, :"data-role" => "button" %>