2012-01-07 2 views
9

Comment stockez-vous un type de données multi-array dans un cookie.Comment stocker une matrice dans un cookie?

Par exemple: [[1, 'foo'], [2, 'bar'], [3, 'foobar']]

Je peux le faire fonctionner avec un seul réseau de dimension en tant que tel:

cookies[:foobar] = { :value => cookies[:foobar] << ",1" } 

et ne

cookies[:foobar].split(',').include?("1") 

Pour vérifier que 1 existe à l'intérieur du biscuit. Je ne sais pas trop comment je peux contourner cela avec un tableau multidimensionnel

Répondre

12

Sérialiser le tableau en json et le stocker dans les cookies.

Regardez deux méthodes:

ActiveSupport::JSON.encode(object) 
ActiveSupport::JSON.decode(string) 
+0

Hmmmm, ne pas les cookies Rails décodent données déjà? Considérons: 'cookies [: test] = {: valeur => ActiveSupport :: JSON.encode ({: color => [" rouge "," vert "," jaune "]}),: expire => 24.heures. from_now} 'renvoie' {"color" => [rouge, "vert", "jaune"]} '. Je n'ai pas besoin de décoder? –

+0

Je pense que vous devez toujours décoder les données de chaîne dans l'objet tableau. – 4ndrew

1

Le plus simple est probablement d'utiliser l'une des méthodes de sérialisation fournies par rails/ruby ​​telles que YAML, marshalling ou json.

Questions connexes