将Rails路径作为字符串,添加一些参数

时间:2012-03-14 10:27:54

标签: ruby-on-rails-3 path

给定一个包含任意路径的字符串:

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和此方法来生成下一页结果。

1 个答案:

答案 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表示字符串或变体。