In ruby 1.9 is there a way to define this hash with the new syntax?
irb> { a: 2 } => {:a=>2} irb> { a-b: 2 } SyntaxError: (irb):5: syntax error, unexpected tLABEL { a-b: 2 } ^
with the old one, it's working:
irb> { :"a-b" => 2 } => {:"a-b"=>2}
Overview. We can check if a particular hash contains a particular key by using the method has_key?(key) . It returns true or false depending on whether the key exists in the hash or not.
A Hash is a dictionary-like collection of unique keys and their values. Also called associative arrays, they are similar to Arrays, but where an Array uses integers as its index, a Hash allows you to use any object type. Hashes enumerate their values in the order that the corresponding keys were inserted.
Ruby hash creation. A hash can be created in two basic ways: with the new keyword or with the hash literal. The first script creates a hash and adds two key-value pairs into the hash object. A hash object is created.
Hash literals use the curly braces instead of square brackets and the key value pairs are joined by =>. For example, a hash with a single key/value pair of Bob/84 would look like this: { "Bob" => 84 }. Additional key/value pairs can be added to the hash literal by separating them with commas.
There are some legitimate symbols that cannot be used with the new syntax. I cannot find a reference, but it appears that a symbol name matching /^[a-zA-Z_][a-zA-Z_0-9]*[!?]?$/
is allowed with the new syntax. The last character may be the special character "!" or "?".
For any symbol that does not meet these restrictions, you have to use the Ruby 1.8 syntax, :'my-symbol-name'
To use dashes with the new syntax:
<%= link_to "Link", link_path, {data: {something: 'value1', somethingelse: 'value2'}} %>
This will generate:
<a href="/link" data-something='value1' data-somethingelse='value2'>Link</a>
This might not exactly be your particular use case, but I found this post while trying to find an answer myself so I thought I'd share my findings.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With