Ruby 1.9では、新しい構文でこのハッシュを定義する方法はありますか?
irb> { a: 2 }
=> {:a=>2}
irb> { a-b: 2 }
SyntaxError: (irb):5: syntax error, unexpected tLABEL
{ a-b: 2 }
^
古いもので、それは働いています:
irb> { :"a-b" => 2 }
=> {:"a-b"=>2}
次の構文も使用できます
{a: 1, b: 2, 'c-c': 3, d: 4}
新しい構文では使用できない正当な記号がいくつかあります。参照が見つかりませんが、/^[a-zA-Z_][a-zA-Z_0-9]*[!?]?$/
に一致するシンボル名が新しい構文で許可されているようです。最後の文字は特殊文字「!」かもしれませんまたは「?」。
これらの制限を満たさないシンボルについては、Ruby 1.8構文、:'my-symbol-name'
を使用する必要があります
新しい構文でダッシュを使用するには:
<%= link_to "Link", link_path, {data: {something: 'value1', somethingelse: 'value2'}} %>
これにより以下が生成されます:
<a href="/link" data-something='value1' data-somethingelse='value2'>Link</a>
これはあなたの特定のユースケースではないかもしれませんが、自分で答えを見つけようとしたときにこの投稿を見つけたので、私の発見を共有したいと思いました。
古い構文と新しい構文を組み合わせることができます。
{a: 1, b: 2, :'c-c' => 3, d: 4}