如何在不使用eval的情况下将字符串转换为ruby / rails中的哈希?

时间:2013-06-04 20:55:58

标签: ruby-on-rails ruby string hash

以下是需要转换为string的{​​{1}}。

hash

我们无法使用"{:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }" ,因为eval将在字符串中执行方法eval。是否有纯字符串操作来完成ruby / rails中的这种转换?谢谢你的帮助。

1 个答案:

答案 0 :(得分:9)

如前所述,您应该使用eval。关于eval执行return_misc_definitions的观点没有意义。它将以任何一种方式执行。

h1 = {:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }
# or 
h2 = eval("{:status => {:label => 'Status', :collection => return_misc_definitions('project_status') } }")

这两行之间没有功能差异,它们会产生完全相同的结果。

h1 == h2 # => true

当然,如果可以,请不要使用红宝石哈希的字符串表示法。使用JSON或YAML。它们更安全(不需要eval)。