Ruby on Rails - 在页面加载后读取Cookie值

时间:2017-08-02 15:05:41

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

在我的一个观点中的应用程序中,我从Cookie添加Controller,并根据此Cookie,我为我的变量设置了一个值(这将是在我的观点中使用)

class SomeController < ApplicationController

  def a_action
    if params[:utm] == 'a'
       cookies[:user_cookie] = {value: 'a', expires: 1.day.from_now}
    else
       cookies[:user_cookie] = {value: 'b', expires: 1.day.from_now}
    end

    if cookies[:user_cookie] == 'a'
       @variable = 'a'
    else
       @variable = 'b'
    end
  end

在我看来a_action#some,我正在做:

%h1= @variable

当用户进入a_action#some视图时,cookies[:user_cookie]设置为用户的浏览器Cookie,但我的视图或控制器不会读取 Cookie值,直到下次刷新。因此,我的视图中的@variable会变成错误的值/根本没有价值。

是否可以在加载页面后阅读Cookie,以便我的@variable始终有值而不需要等待下一次刷新?

1 个答案:

答案 0 :(得分:0)

Cookie是客户端功能。您的服务器只能在有请求时读取cookie,即在您的控制器操作中。

在页面加载后读取cookie的唯一方法是使用Javascript::not(:first-child)

https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

http://clubmate.fi/setting-and-reading-cookies-with-javascript/