Si je tourne un hachage de rubis dans une chaîne de paires de noms de noms (à utiliser dans les params http, par exemple), est-ce le meilleur moyen? Je suppose Ma question est la suivante: p> est-il un moyen plus facile d'accéder à http_params code>? Certes, la voie ci-dessus fonctionne et est assez simple, mais je suis curieux s'il y a un moyen de recevoir du hachage à la chaîne sans créer d'abord de créer un tableau (le résultat de la méthode code> méthode)? < / p> p>
4 Réponses :
C'est probablement le meilleur que vous puissiez faire. Vous pouvez parcourir les paires dans le hachage, construire la chaîne comme vous allez. Mais dans ce cas, la chaîne intermédiaire devrait être créée et supprimée à chaque étape. p>
Avez-vous un cas d'utilisation où il s'agit d'un goulot d'étranglement de performance? En général, Ruby fait tellement de travail dans les coulisses qui se préoccupent d'un tableau temporaire comme celui-ci ne vaut probablement pas la peine. Si vous craignez que cela puisse être un problème, envisagez de profiler votre code de vitesse et de mémoire, les résultats ne sont souvent pas ce que vous attendez. P>
Non, je ne suis pas inquiet pour être un problème de performance - je suis toujours relativement nouveau à Ruby et était curieux de voir s'il y avait une «facilité». On dirait chaque fois que je commence à écrire une méthode, je trouve une méthode de rubis ou de rails qui fait exactement la même chose (par exemple distance_of_time_in_words code>). :)
du le guide du programmeur pragmatique em>: plusieurs paramètres passés à un rendement
sont convertis en une matrice si le bloc
a juste un argument. p>
BlockQuote> Par exemple: P>
> fields.map{ |a| a.join('=') }.join('&') # => "a=foo&b=bar"
Je ne vois pas comment c'est plus simple. Si quelque chose, il masque l'intention du code derrière la magie "Multiples paramètres => Array".
Eh bien, c'est certainement une question de goût. i i> trouve plus simple car il construit la chaîne sans que je doive explicitement traiter des clés et des valeurs. Je conviens que c'est moins lisible, cependant.
rails fournit TO_Query code> méthode sur Classe CODE> HASH. Essayez: p>
champs.Tourery code> p>
Joli! Ceci est exactement ce que je cherchais.
Dans les rails, il a également eu une méthode pour convertir Hash en param. P>
exemple1: Tournez un hachage en paramètres forts> p>
résultat: strong> p>
Exemple2: Tournez les params vers hahs forts> p>
résultat: strong> p>
{param1: "value1", param2: "valeur2"} .TO_Query code> p>
blockQuote>
"param1 = value1 & param2 = value2" code> p>
blockQuote>
params = "param1 = value1 & param2 = value2" code> p>
blockQuote>
rack :: utils.parse_netés_query (paramètres) code> p>
blockQuote>
{"param1" => "value1", "param2" => "value2"} code> p> p>
blockQuote>
Le tien est de la même manière que la mienne. N'oubliez pas de faire un codage correct sur les valeurs.