【问题标题】:Rails 4 cookies issue in FireFox and Safari, but works in Chrome?Rails 4 cookie 在 FireFox 和 Safari 中出现问题,但在 Chrome 中有效?
【发布时间】:2014-08-13 09:42:42
【问题描述】:

控制器

  def index
    if cookies.blank? || !(JSON.parse(cookies.signed[:affiliate])['expires'] > DateTime.now)
      cookies.signed[:affiliate] = JSON.generate(
        id: params[:affiliate],
        expires: 30.days.from_now
      )
    end
  end

查看

  <%= JSON.parse(cookies.signed[:affiliate])['id'] || 'None' %>


问题 这在 Chrome 中工作,但在 FireFox 和 Safari 中失败了。不知道为什么...有什么问题?

FireFox/Safari 错误:

no implicit conversion of nil into String

【问题讨论】:

    标签: ruby-on-rails ruby cookies ruby-on-rails-4


    【解决方案1】:

    这是有效的解决方案。在 Chrome/FireFox/Safari 中测试。将 cookies 设置器拆分为单独的方法。工作 grrrreat!享受...

    控制器:

      def index
        if cookies.signed[:affiliate].blank?
          @aff = 'ms'
        else
          @aff = JSON.parse(cookies.signed[:affiliate])['id']
        end
      end
    
      def ref
        if cookies.signed[:affiliate].blank? ||
           JSON.parse(cookies.signed[:affiliate])['expires'] < DateTime.now
    
        cookies.signed[:affiliate] = JSON.generate(
          id: params[:affiliate],
          expires: 30.minutes.from_now
        )
        end
    
        redirect_to root_path
      end
    

    查看:

      <%= @aff %>
    

    【讨论】:

      【解决方案2】:

      cookies.signed[:affiliate] 看起来返回 nil,JSON 无法解析。

      试试

      def index
        if cookies.blank? || 
           cookies.signed[:affiliate].blank? ||
           JSON.parse(cookies.signed[:affiliate])['expires'].blank? ||
           DateTime.parse((JSON.parse(cookies.signed[:affiliate])['expires']) < DateTime.now)
           #You'll probably need to parse dates before using them after parsing JSON.
          ...
      

      我能想到的是,您之前的一些开发已经在 Chrome 上设置了 cookie,而其他的则没有。

      【讨论】:

      • 嘿,非常感谢您的回答...事实证明 cookie 是 ___ 测试的真正痛苦...只是让您知道 DateTime.parse() 不是必需的,它实际上破坏了代码.. .
      猜你喜欢
      • 2022-08-04
      • 2021-10-29
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多