2

Javascript を使用して Rails ビュー内から Cookie 値を設定し、Controller を使用してこの Cookie を読み取りたいと思います。これはRailsで可能ですか?どうすればいいですか?

私の状況: ユーザーが最初にサイトにアクセスしたときに入力する必要がある入力フィールド (住所など) があります。次に、ユーザーは Omniauth を使用してログインします。彼がログインするまでアドレスを保持したいと思います。

更新: クライアントの document.cookies に追加できました。ただし、Cookie["something"] は Rails 側から nil を返します。以下は、Cookie ハッシュです。

#<ActionDispatch::Cookies::CookieJar:0x007 @secret="f4d518c0b2", @set_cookies={}, @delete_cookies={}, @host="localhost", @secure=false, @closed=false, @cookies={"_myapp_session"=>"BAh7Ck==--776b2fcfcd63d3c84d2b1de5327e277499add6d4", "fbsr_1505068851081"=>"mqZeyvoRC"}, @signed=#<ActionDispatch::Cookies::SignedCookieJar:0x007 @parent_jar=#<ActionDispatch::Cookies::CookieJar:0x007fdf...>, @verifier=#<ActiveSupport::MessageVerifier:0x007fdfa34548d8 @secret="f4d518c0b2e9d8", @digest="SHA1", @serializer=Marshal>>>

4

3 に答える 3

11

JavaScript で Cookie を設定するには、次のようにします。

document.cookie="something= test";

したがって、イベント (クリック、送信、..) を追加して、入力から値を取得し、上記の方法で Cookie を作成できます。

Rails では、次のように値を読み取ることができます。

cookies["something"]

必要に応じて、Cookie の有効期限を JavaScript で指定することもできます。

于 2013-02-26T21:23:56.170 に答える
2

簡潔な答え

  1. MDN JavaScript Cookie フレームワークをインストールする

  2. あなたのjsファイルで:

    docCookies.setItem('my_cookie', 'my_cookie_value', '', '/');
    
  3. Railsコントローラーで:

    cookies[:my_cookie]
    

それほど短い答えではない

Rails ActionDispatch::Cookiesはデフォルトで Cookie パスをアプリケーションのルートに設定しますが、プレーンな JavaScriptはデフォルトで現在のパスに設定します。

これは、パスを宣言しないと、同じ名前の 2 つの異なる Cookie が作成されて頭痛の種になることを意味します。

これをトラブルシューティングするには、Chrome DevTools ウィンドウの「Application/Cookies」を使用して、各 Cookie のすべての詳細を表示し、「Console」パネルで変更した値を再ロードできます。

于 2016-10-28T05:04:50.790 に答える