How to store array on a cookie rails 4?

前端 未结 3 1042
再見小時候
再見小時候 2021-01-20 01:03

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 = ActiveSupp

相关标签:
3条回答
  • 2021-01-20 01:46

    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.

    0 讨论(0)
  • 2021-01-20 02:01

    Use session, not cookies. You don't have to decode it, rails handles that for you. Create the session the same way you already are:

    session[:test] = Array.new
    

    and when you need it, access it like normal

    session[:test]
    # => []
    
    0 讨论(0)
  • 2021-01-20 02:03

    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.

    0 讨论(0)
提交回复
热议问题