2012-03-14 67 views
2

给出一个包含有一个任意路径的字符串:鉴于Rails的路径作为一个字符串,添加一些参数

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

如果使用路由帮助程序,而不是包含任意路径的字符串:say,'users_path'产生'“/ users”,那么'users_path(:foo =>“bar”,:foo1 =>“bar1”)'产生'“/ users?foo1 = bar1&foo = bar”' – prasvin 2012-03-14 10:44:52

回答

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合并它串,重新分配和对字符串或变型。

相关问题