10
votes

Peut stocker hachage dans un cookie?

Quelqu'un sache si je peux mettre un hash dans le cookie? Quelque chose comme ça: Cookies [: test] = {: top => 5, Middle => 3, à bas => 1}

merci


0 commentaires

3 Réponses :


15
votes

Je regarderai dans la sérialisation du hachage pour la stocker. Ensuite, désérialisez-le pour le récupérer.

Lorsque vous serifiez un hachage, le résultat sera une chaîne codée. Cette chaîne peut être décodée pour récupérer l'objet d'origine. P>

Vous pouvez utiliser YAML ou JSON pour cela. Les deux sont bien pris en charge dans Ruby. P>


Un exemple YAML Exemple P>

require "json"

cookies[:test] = JSON.generate {a: 1, b: "2", hello: "world"}
# => '{"a":1,"b":"2","hello":"world"}'

JSON.parse cookies[:test]
# => {"a"=>1, "b"=>"2", "hello"=>"world"}


3 commentaires

Je vais essayer de cette façon et voir si cela fonctionne pour moi, merci beaucoup


Cela ne fonctionne pas pour moi du tout :( Je reçois des plaintes sur le caractère ":" Caractères ":" Erreur de syntaxe, inattendue ':', attendant '}' ) Toutes idées? J'ai essayé les deux vos suggestions YAML et JSON, mais les deux se plaignent du même problème.


Fwiw, je l'ai fait un peu différemment qui a bien fonctionné pour moi. Cookies [: My_Cookie] = {Valeur: ActiveSupport :: json.encode (my_Object), expire: quelque_time} Je l'ai retiré de manière similaire avec décodage. Merci de me mettre sur le bon chemin, cependant.



1
votes

Il y a un certain nombre de façons que cela est possible (c'est-à-dire stocker une chaîne et eval cette valeur, effrayant!). C'est un moyen simple. XXX

Vous pouvez également convertir en JSON, puis l'analyser lors du chargement de la cookie.

Les versions plus récentes des rails incluent automatiquement la sérialisation à l'aide de l'objet Session .


0 commentaires

4
votes

avec des rails 4.1 Je devais utiliser les parenthèses comme celle-ci. Sans cela, il a donné une erreur.

cookies[:test] = JSON.generate({a: 1, b: "2", hello: "world"})


1 commentaires

Je ne pense pas que tu aies besoin des accolades bouclés.