2011-12-12 64 views
40

我使用jQuery移動與Ruby on Rails的。如何在Ruby符號中使用破折號「 - 」?

我想創建這意味着有data-role="button"出現在生成的HTML按鈕鏈接。

我已經試過:

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

但後來,我得到一個錯誤

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

有沒有辦法使用:xxx符號逃脫破折號或我應該只使用"xxx"符號?

(我同意這是一個化妝品的問題,但我想我的代碼是一致的,不喜歡例外)

回答

73

使用單引號周圍的符號名稱,用冒號前綴:

:'data-role' => 'button' 

這裏是符號的很好的參考:

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

+2

或雙引號 - 或者正常工作。還要注意,[不能用這樣的方式逃脫了1.9備選哈希語法符號(http://stackoverflow.com/questions/2134702/ruby-1-9-hash-with-a-dash-在一個關鍵) – arcresu

+0

謝謝大家,我投了最全面的答案,但所有的貢獻是值得歡迎的! :) –

+2

作爲一種習慣,我平時使用的時候會有串插,單爲當字符串應該是一成不變的雙引號。 –

3

把它包在單引號:

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

或可選擇地使用直串'「數據角色」'。不需要它是一個符號。 #codegolf –

12

如果發現語法<%= link_to "Play", game_play_path, :"data-role" => "button" %>醜陋的,因爲它使用了舊的Hash語法,另一種方式來做到這一點的是涉及使用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"} %>