Here is the string
which needs to convert into a hash
.
"{:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }"
We can not use eval
because eval
will execute the method return_misc_definitions('project_status')
in the string. Is there pure string operation to accomplish this conversion in Ruby/Rails?
As mentioned earlier, you should use eval
. Your point about eval
executing return_misc_definitions
doesn't make sense. It will be executed either way.
h1 = {:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }
# or
h2 = eval("{:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }")
There's no functional difference between these two lines, they produce exactly the same result.
h1 == h2 # => true
Of course, if you can, don't use string represenstation of ruby hashes. Use JSON or YAML. They're much safer (don't require eval
).
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