Javascript 从视图设置cookie,然后从Rails中的控制器读取它

Javascript 从视图设置cookie,然后从Rails中的控制器读取它,javascript,ruby-on-rails,cookies,Javascript,Ruby On Rails,Cookies,我想使用Javascript在Rails视图中设置cookie值,然后使用Controller读取此cookie。Rails是否可以实现这一点,我应该如何实现 我的情况:我有一个输入字段(比如地址),当用户第一次来到我的站点时,需要填写该字段。然后用户使用Omniauth登录。我想把地址保留到他登录之后 更新: 我可以在客户端上添加document.cookies。但是,cookies[“something”]从Rails端返回nil。下面是cookie哈希: #“BAh7Ck=--776b2f

我想使用Javascript在Rails视图中设置cookie值,然后使用Controller读取此cookie。Rails是否可以实现这一点,我应该如何实现

我的情况:我有一个输入字段(比如地址),当用户第一次来到我的站点时,需要填写该字段。然后用户使用Omniauth登录。我想把地址保留到他登录之后

更新: 我可以在客户端上添加document.cookies。但是,cookies[“something”]从Rails端返回nil。下面是cookie哈希:


#“BAh7Ck=--776b2fccd63d3c84d2b1de5327e277499ad6d4”,“fbsr_1505068851081”=>“mqZeyvoRC”},@signed=#>

要在javascript中设置cookie,您可以执行以下操作:

document.cookie=“something=test”

因此,您可以添加一个事件(单击、提交等)以从输入中获取值,并按照我上面提到的方式创建cookie

在rails中,您可以读取如下值:

cookies[“某物”]


如果需要,您还可以在javascript中指定cookie何时过期。

这可以解释您的问题。显然,你需要确保饼干的路径对齐


简短回答

  • 安装

  • 在您的js文件上:

    docCookies.setItem('my_cookie', 'my_cookie_value', '', '/');
    
  • 在rails控制器上:

    cookies[:my_cookie]
    
  • 回答不那么简短

    Rails将cookie路径默认为应用程序的根路径,而将其默认为当前路径

    这意味着,如果您不声明路径,您将得到两个不同的cookie,它们具有相同的名称,并且令人头痛


    为了解决此问题,您可以使用Chrome DevTools窗口上的“应用程序/Cookies”,这样您就可以查看每个cookie的所有详细信息,并在通过“控制台”面板修改它们时重新加载它们的值。

    谢谢您的回答。我得到了第一部分的作品。但是我不能像你在第二部分说的那样得到饼干。曲奇似乎已经签名了,所以我不能更改它。你知道有什么办法可以绕过这件事吗?再次感谢。@AdamNYC,你能试试
    cookies吗?签名[“某物”]
    ?我试过cookies。签名[“某物”]但它是零。我更新了问题中的cookie哈希。