【发布时间】:2016-05-02 12:17:48
【问题描述】:
使用以下代码,我希望看到'test-keyword',但我没有:
line_item = "\#{item[‘value’][‘keyword’]}"
item['value'] # => {..., "keyword"=>"test-keyword", ...}
String.interpolate {line_item} # => NameError: undefined local variable or method `‘value’'
但是,如果我更改 line_item 的值,进行插值,然后改回来,我会得到不同的结果:
line_item = "\#{item['value']}"
String.interpolate {line_item}
# => "{\"bot_client_id\"=>\"aiaas-1409611358153-user-0012\", \"recurring\"=>true, \"recurring_natural_language\"=>\"every day\", \"time_string\"=>\"9:16am\", \"ti_Angeles\", \"via\"=>\"sms\", \"keyword\"=>\"test-keyword\", \"status\"=>\"active\", \"created_time\"=>1453620894000, \"process\"=>\"unstarted\"}"
在上面,interpolate 只需更改 line_item 即可成功运行。然而,
line_item = "\#{item['value']['keyword']}"
String.interpolate {line_item} # => "test-keyword"
现在可以了。在第一遍中,item['value']['keyword'] 失败;第二次,它起作用了。
我的预期行为是让它作为第二次工作,但我一直在使用未定义的局部变量出错。我需要做什么?
【问题讨论】:
-
核心 Ruby 中没有这样的方法。如果您正在使用特定的库/框架/脚本,请这样写。