我正在使用带有Ruby On Rails的jquery-mobile。
我想创建一个按钮链接,暗示在生成的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"
表示法?
(我同意这是一个美化问题,但我希望我的代码保持一致,不喜欢例外)
答案 0 :(得分:82)
在符号名称周围使用单引号,冒号前缀为:
:'data-role' => 'button'
这里有一个很好的符号参考:
http://www.troubleshooters.com/codecorn/ruby/symbols.htm#_What_do_symbols_look_like
答案 1 :(得分:15)
如果您发现语法<%= link_to "Play", game_play_path, :"data-role" => "button" %>
丑陋,因为它使用旧的哈希语法,另一种方法是使用ruby 1.9语法进行哈希处理,请执行以下操作:
<%= link_to "Play", game_play_path, data: {role: "button"} %>
哈希重叠在html输出中生成数据和角色之间的连字符。
要小心,因为这只适用于数据属性,但在你的情况下,这是一个更令人赏心悦目的选择。
此外,如果您有更多数据属性,您也可以在嵌套哈希中编写它们:
<%= link_to "Play", game_play_path, data: {role: "button", other1: "value1", other2: "value2"} %>
答案 2 :(得分:3)
用单引号括起来:
:'data-role' => "button"
答案 3 :(得分:2)
<%= link_to "Play", game_play_path, :"data-role" => "button" %>