Comment échapper à un tiret «-» dans un symbole Ruby?

J’utilise jquery-mobile avec Ruby On Rails.

Je veux créer un lien de bouton qui implique que data-role="button" apparaisse dans le code HTML généré.

J’ai essayé:

  "button" %> 

Mais alors, je reçois une erreur

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

Y a-t-il un moyen d’échapper au tiret en utilisant la notation :xxx ou devrais-je simplement utiliser la notation "xxx" ?

(Je suis d’accord que c’est une question cosmétique, mais je veux que mon code soit cohérent et n’apprécie pas les exceptions)

Utilisez des guillemets simples autour du nom du symbole, avec le préfixe deux points:

 :'data-role' => 'button' 

Et voici une belle référence sur les symboles:

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

Si vous trouvez la syntaxe <%= link_to "Play", game_play_path, :"data-role" => "button" %> parce qu’il utilise l’ancienne syntaxe de hachage, une autre façon de procéder consiste à utiliser la syntaxe ruby ​​1.9 pour les hachages est de faire ce qui suit:

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

L’imbrication de hachage génère le trait d’union entre les données et le rôle dans la sortie HTML.

Soyez prudent car cela ne fonctionne qu’avec des atsortingbuts de données, mais dans votre cas, c’est une alternative plus agréable.

De plus, si vous avez plus d’atsortingbuts de données, vous pouvez également les écrire dans le hachage nested:

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

Enveloppez-le en guillemets simples:

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