Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to store array on a cookie rails 4?

I am trying to store an array on rails an getting error on the decoding. I use cookies[:test] = Array.new And when I am trying to decode @test = ActiveSupport::JSON.decode(cookies[:test]) I am getting an error. Whats the proper way to achieve what I am trying to ?

like image 425
Petran Avatar asked Sep 16 '13 22:09

Petran


2 Answers

When writing to the cookie I usually convert the array to a string.

def save_options(options)
  cookies[:options] = (options.class == Array) ? options.join(',') : ''
end

Then I convert back into an array when reading the cookie.

def options_array
  cookies[:options] ? cookies[:options].split(",") : []
end

I'm not sure if this is "the right way" but it works well for me.

like image 164
Stenerson Avatar answered Oct 05 '22 16:10

Stenerson


The "Rails way" is to use JSON.generate(array), since it's what is used in the second example in the Cookies docs:

# Cookie values are String based. Other data types need to be serialized.
cookies[:lat_lon] = JSON.generate([47.68, -122.37])

Source: http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

When you want to read it back, just use JSON.parse cookies[:lat_lon] for example, and it'll provide you an array.

like image 33
sandre89 Avatar answered Oct 05 '22 14:10

sandre89