Nuestros mejores desarrolladores han agotado sus provisiones de café, por su búsqueda noche y día por la solución, hasta que Matías halló el hallazgo en GitLab así que en este momento la compartimos contigo.
Solución:
Recomendaría limitarse al uso de un gsub
tal vez con un comentario para explicar la necesidad de tal comportamiento.
Mientras tu pudo resolver el problema mediante el uso de URI.escape
, supuestamente está en desuso, ya que no se ajusta completamente a las especificaciones RFC. Ver aquí para un gran artículo sobre él.
Hash#to_param
es un alias de Hash#to_query
que llama Object#to_query
. El ejemplo más simple para demostrar esto +
contra %20
el problema es:
'John Key'.to_query(:name) # => "name=John+Key"
La implementación de Object#to_query
es:
def to_query(key)
"#CGI.escape(key.to_param)=#CGI.escape(to_param.to_s)"
end
Y así, encontramos que:
CGI.escape("John Key") # => "John+Key"
Por lo tanto, es por eso que he hecho referencia a las diferencias entre CGI.escape
y URI.escape
.
Qué tal si
URI.encode 'John Smith'
# => John%20Smith
realmente no.
Sugiera usar: your_params_hash.to_query.gsub("+", "%20")
Sección de Reseñas y Valoraciones
Al final de todo puedes encontrar las referencias de otros sys admins, tú igualmente tienes el poder mostrar el tuyo si lo deseas.