Как избежать тире "-" в символе Ruby?

Я использую 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"?

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

Ответ 2

Если вы обнаружите синтаксис <%= link_to "Play", game_play_path, :"data-role" => "button" %> уродливый, потому что он использует синтаксис старого хеша, другой способ сделать это, который включает использование синтаксиса ruby ​​1.9 для хэшей, состоит в том, чтобы сделать следующее:

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

Хеширование символов генерирует дефис между данными и ролью в выходе html.

Будьте осторожны, потому что это работает только с атрибутами data-something, но в вашем случае это более приятная альтернатива.

Кроме того, если у вас есть больше атрибутов data-something, вы также можете записать их во вложенном хеше:

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

Ответ 3

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

:'data-role' => "button"

Ответ 4

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