将变量添加到URI

时间:2014-12-17 00:27:08

标签: ruby

我从JSON响应中提取一个整数,然后使用该整数作为循环的上限:

data = response.parsed_response["meta"]
pages = data['total']   

            (1..pages.to_i).step(1) do |page_num|

                response2 = client.get('/item?page=#{page_num}&per_page=1', :headers => {'Authorization' => auth, 'Content-Type' => 'application/json'})

但是,我似乎无法以一种可用于HTTParty的方式将变量传递给URI:

/opt/chef/embedded/lib/ruby/1.9.1/uri/common.rb:176:in `split': bad URI(is not URI?): /items?page=#{page_num}&per_page=1 (URI::InvalidURIError)

我尝试了其他方法(例如'/item?page=' + page_num + '&...'),但同样不成功。我并不是我忽略的地方,而是有另一种更正确的方法。

输出以整数形式返回,并且可以使用,但似乎没有传递到上面的URI字符串中。

我遇到了这个帖子:

URI with variable

但我不确定这是否适用,尝试调整解决方案失败(undefined method `strip' for 10:Fixnum (NoMethodError)

1 个答案:

答案 0 :(得分:1)

而不是:

'/item?page=#{page_num}&per_page=1'

使用:

"/item?page=#{page_num}&per_page=1"

带单引号的字符串不允许插值;因此要进行插值,必须使用双引号字符串。

仅供参考:当涉及整数范围时,您无需指定"步骤(1)"因为它是默认值。