Push un hash dans un tableau

Par TransientDev, il y a 10 ans


Bonjour,

je travaille actuellement sur une petit application de vente de produits et je bloque à quelques endroits.
J'ajoute un item au panier (en session pour le moment), si le panier n'a pas encore été initialisé je crée un tableau vide et j'ajoute l'item.

module Cart def add_to_cart(item) if session[:cart].nil? session[:cart] = [] session[:cart] << item else session[:cart] << item end end end

le premier s'ajoute nickel
partial session dump

cart: [{"description"=>"Professional P2213 - Ecrans PC", "designation"=>"DELL", "id_produit"=>"1", "prix"=>"233.71", "quantite"=>"10", "selected"=>"false"}]

Et à partir du deuxième j'obtiens l'erreur suivante (le format du produit n'est pas super, je dois le recuperer d'un wsdl... mais bon pour le moment on fait avec)

no implicit conversion of ActiveSupport::HashWithIndifferentAccess into Array

Je ne vois pas comment contourner ce problème, si quelqu'un pouvait m'aiguiller ce serait vraiment super.

Merci d'avance, et bonne année à tous :).
Cordialement

1 réponse

TransientDev, il y a 10 ans

J'ai résolu le problème en faisant:

session[:cart] << item.to_json

du coup je dois le parser à chaque fois que j'y accède mais ça suffira pour cette fois ci ^_^.
Je met le sujet en résolu mais si quelqu'un a une meilleurs proposition qu'il n'hésite pas, au cas ou ça puisse aider quelqu'un plus tard :D