2 votes

Étant donné un chemin Rails sous forme de chaîne, ajoutez quelques paramètres

Étant donné une chaîne de caractères contenant un chemin arbitraire :

s = "/api/doctors/123/patients?page=4&active=true"

Quelle est la meilleure façon d'ajouter un autre paramètre à ce chemin ? Je cherche quelque chose avec un comportement comme le suivant :

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"

Cela existe-t-il ?


Ce que je cherche à faire est d'ajouter une next dans mon API pour la pagination, afin que les clients sachent comment obtenir la page suivante de résultats :

{
  "results": [ {...}, {...}, ... ]
  "next": "/api/doctors/123/patients?page=5"
}

Mon espoir est que je puisse utiliser request.path et cette méthode pour produire la page suivante de résultats.

0voto

toxaq Points 2427

Vous pouvez utiliser le URI pour cela.

>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" 

Diviser les paramètres dans un hash, le fusionner avec les nouvelles valeurs, hacher en chaîne, réassigner et ensuite uri en chaîne ou variations de celle-ci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X