给定一个包含任意路径的字符串:
s = "/api/doctors/123/patients?page=4&active=true"
在此路径中添加其他参数的最佳方法是什么?我正在寻找具有如下行为的东西:
merge_parameters s, :foo => 'bar'
# => "/api/doctors/123/patients?page=4&active=true&foo=bar"
merge_parameters s, :page => 5
# => "/api/doctors/123/patients?page=5&active=true"
这是否存在?
我要做的是在我的API中添加next
链接以进行分页,以便客户知道如何获取下一页结果:
{
"results": [ {...}, {...}, ... ]
"next": "/api/doctors/123/patients?page=5"
}
我希望我可以使用request.path
和此方法来生成下一页结果。
答案 0 :(得分:0)
您可以使用URI类。
>rails c
Loading development environment (Rails 3.2.6)
1.9.3p194 :001 > a = URI.parse("/api/doctors/123/patients?page=4&active=true")
=> #<URI::Generic:0x007fa27c33f6f0 URL:/api/doctors/123/patients?page=4&active=true>
1.9.3p194 :002 > a.path
=> "/api/doctors/123/patients"
1.9.3p194 :003 > a.query
=> "page=4&active=true"
将params拆分为哈希值,将其与新值合并,哈希到字符串,重新分配,然后用uri表示字符串或变体。