如何在Ruby符号中删除短划线“ - ”?

时间:2011-12-12 22:46:52

标签: ruby ruby-on-rails-3 jquery-mobile

我正在使用带有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"表示法?

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

4 个答案:

答案 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" %>