以下是complex_string
,我们希望将其转换为哈希{:stats => str1,:search => STR2}:
:stats => {<%=t('Payment Total($)') %>: <%= number_with_precision(number_with_delimiter(@s_s_results_details.models.joins(:contract => :payments).sum(:paid_amount)), :precision => 2) %>
<%=t('Contract Total($)') %>: <%= number_with_precision(number_with_delimiter(@s_s_results_details.models.joins(:contract).sum(:contract_amount)), :precision => 2) %>},
:search => {}
最后,我们想将str1和str2分配给2个变量。我们尝试使用eval(complex_string)
并出现错误:
"(eval):1: syntax error, unexpected =>, expecting end-of-input :stats => {<%=t('Payment Tota... ^"
似乎字符串中的=>
会导致错误。有没有办法可以将complex_string
转换成哈希?感谢。
答案 0 :(得分:1)
这是适用于该特定情况的代码:
complex_string = ":stats => {<%=t('Payment Total($)') %>: <%= number_with_precision(number_with_delimiter(@s_s_results_details.models.joins(:contract => :payments).sum(:paid_amount)), :precision => 2) %>
<%=t('Contract Total($)') %>: <%= number_with_precision(number_with_delimiter(@s_s_results_details.models.joins(:contract).sum(:contract_amount)), :precision => 2) %>},
:search => {}"
hash = {}
complex_string.scan(/^:(\S+) => ({.*?}),?$/m).each do |m|
hash[m[0].to_sym] = m[1]
end
hash # => {:stats=>"{<%=t('Payment Total($)') %>: <%= number_with_precision(number_with_delimiter(@s_s_results_details.models.joins(:contract => :payments).sum(:paid_amount)), :precision => 2) %>\n<%=t('Contract Total($)') %>: <%= number_with_precision(number_with_delimiter(@s_s_results_details.models.joins(:contract).sum(:contract_amount)), :precision => 2) %>}", :search=>"{}"}
答案 1 :(得分:0)
你能在你的控制器中构建它并用json回复吗?