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

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

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

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

Ruby

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

942閲覧

jQueryのcookieについて

hanayama

総合スコア11

Cookie

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

Ruby

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2020/11/19 08:39

編集2020/11/19 10:23

#解決したい事

Railsでウェブアプリを製作中なのですが、複数のチェックボックスがあり、チェックを付けたらその項目を1日非表示にしたいです。
jqueryのcookieを使い、自分なりにやってみたのですが非表示になってたりなってなかったりでうまくいきません。

わかる方いましたら是非知恵を貸していただきたいです。
よろしくお願いします。

#該当のソースコード
htmlファイル

<%= f.collection_check_boxes :habit_ids, @user.habits,:id,:task,checked: false do |b| %> <div class="one-click<%= b.value %>"> <%= b.label do %> <%= b.check_box %> <%= b.text %> </div>

jqueryファイル

$(document).on('turbolinks:load',function() { if($.cookie('complete')){ var cookie = ($.cookie('complete')) var habit_class = cookie.split(','); $(habit_class).each(function(index, element) { $(element).hide(); }); } else { var clicks = []; } $('input[name="user[habit_ids][]"]').one('click',function() { var p = $('<p>').text('達成!') $(this).before(p); $(this).hide(); $('input[name="user[habit_ids][]"]:checked').each(function() { clicks.push('.one-click' + this.value); }); $.cookie('complete', clicks, { expires: 1, path:'/'}); }); });

#エラー内容

Uncaught TypeError: Cannot read property 'push' of undefined at HTMLInputElement.<anonymous> (check.js:18) at HTMLInputElement.fn (event.js:84) at HTMLInputElement.dispatch (event.js:328) at HTMLInputElement.elemData.handle

pushがうまくいってないみたいです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

completeを取り出し時には文字列として「,」で分割しているのに
投入時には配列のママ処理していませんか?
joinするとかjson化するとかやりようがあるかと

投稿2020/11/20 05:38

yambejp

総合スコア114979

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

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

hanayama

2020/11/20 06:50

joinも含め、また色々やってみたのですがやっぱりcookieに期待したように保存されません。 根本的にcookie、javascriptの勉強不足だと思いますのでまた基礎から勉強し直してみます。 回答してくださった方々本当にありがとうございました!
yambejp

2020/11/20 07:22

解決していないのに安易にベストアンサーをつけないようにお願いします。 ご自身で回答をつけて、未解決にしておくのがベター
hanayama

2020/11/20 07:26

そうなんですか。色々と勉強になります!ありがとうございますm(_ _)m
guest

0

コード見た感じif($.cookie('complete')){がfalseのときにしかclicksという変数は定義されていません。まずはそのあたりから見てみては。

投稿2020/11/19 20:27

m.ts10806

総合スコア80854

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問