在字符串中调用公共类方法

时间:2018-01-25 12:35:57

标签: ruby

我试图在POST调用的有效负载中插入一个公共类方法。我写的代码:

this.Host

所以我要做的就是这次调用每次调用时都会生成一个新的UUID。显然,问题在于整个有效载荷是单引号(例如')。我尝试用单引号包装UUID,但这不会生成相同的输出。我也试过#{,但这也不起作用。

我还可以尝试在不更改消息的情况下调用UUID方法吗?

1 个答案:

答案 0 :(得分:0)

你可以通过几种方式去。您可以使用插值字符串(带双引号"like this"的字符串,并且确实在此字符串中使用#{}。但是,您需要手动转义字符串中的每个"麻烦。

另一种方法是使用您想要的json数据制作哈希值,并在其上调用.to_json。(注意:您需要添加require 'json'

{ event: "start_skill", uuid: RandomSecure.uuid }.to_json

哪会导致:

"{\"event\":\"start_skill\", \"udid\": \"some random udid\"}"

所以要把它包起来:

# somewhere at the top of your file
require 'json'

payload = { event: "start_skill", uuid: RandomSecure.uuid }.to_json
RestClient::Request.execute(method: :post,
                            url: $url,
                            payload: payload,
                            headers: { "Content-Type" => "application/json" })