質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

2回答

376閲覧

[Rails]Cookiesに配列を保存していきたい

takaaa

総合スコア7

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

0グッド

1クリップ

投稿2023/01/10 13:36

編集2023/01/10 13:52

前提

閲覧したページのidをcookiesに保存して行きたいのですが、うまく行きません。
下記のような流れを想定していたのですが

ログイン時に空の配列をセット cookies[:history] = [] ページ遷移時にidを追加していく cookies.unshift[:history] params[:id].to_i

実際に中身を確認すると

cookies[:history] []

となります。(空のまま)

試したこと

cookiesではなくsessionに変えてみたところ、idが追加されていきやりたいことができました。
ただブラウザを閉じても保持したいのでcookiesを使いたいと考えております。

手詰まりの状態なので、解決方法、または他のやり方のご教授よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

クッキーは文字列を送り文字列で受け取るものですから、配列そのものはやり取りできません。
とりあえず配列で入れて、送信寸前に JSON とか YML で文字列に変換し、
受け取ったら それをdecodeして配列に入れ直す
というようなやり方になるでしょうか。

投稿2023/01/13 06:42

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

文法的には

rb

1cookies[:history].unshift params[:id].to_i

じゃないでしょうか

投稿2023/01/10 13:43

yuma.inaura

総合スコア1453

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takaaa

2023/01/10 13:53

ご指摘ありがとうございます! こちらの質問に書く際にミスっていました。。ソースコード自体はご指摘された通りに書いております
yuma.inaura

2023/01/10 14:30

cookiesに配列を記録しようとしても、あくまで文字列として記録され、次のリクエストでは文字列扱いになるっぽいですね cookies[:a] = ["a","b"] # 次のリクエストでは "a&b" として扱われる Cookieには容量上限があるので無限に値を増やしていく運用は合わないかも
yuma.inaura

2023/01/10 14:31

sessionの有効期限は設定で伸ばすことも出来ます
takaaa

2023/01/11 12:24

なるほど、文字列で保存してしまうんですね。 おっしゃる通り容量制限があるので無制限では良くないですね。上限達したら古いidは消すような処理を入れようかと思います。 他にいい方法とかありますでしょうか?ご教授いただければ幸いです
yuma.inaura

2023/01/11 12:55

セッションじゃダメですか?
takaaa

2023/01/11 23:28

ブラウザを閉じても保持がしたくてセッションは諦めている状況です。
yuma.inaura

2023/01/12 03:17

sessionの有効期限は設定で伸ばすことも出来ますがそれではダメですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問