Как избежать тире "-" в рубиновом символе? - PullRequest
51 голосов
/ 13 декабря 2011

Я использую jquery-mobile с Ruby On Rails.

Я хочу создать ссылку на кнопку, которая подразумевает, что 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"?

(я согласен, что это косметический вопрос, но я хочу, чтобы мой код был непротиворечивым и не любил исключения)

Ответы [ 4 ]

84 голосов
/ 13 декабря 2011

Используйте одинарные кавычки вокруг имени символа с префиксом двоеточия:

:'data-role' => 'button'

А вот хорошая ссылка на символы:

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

ПослеRuby 1.9 Вы также можете сделать

'data-role': 'button'
15 голосов
/ 04 октября 2012

Если вы найдете синтаксис <%= 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"} %>
3 голосов
/ 13 декабря 2011

Оберните его в одинарные кавычки:

:'data-role' => "button"
2 голосов
/ 13 декабря 2011
<%= link_to "Play", game_play_path, :"data-role" => "button" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...