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

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

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

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

Q&A

1回答

1182閲覧

クッキーで「最近見た商品」を表示をしたい

pecchan

総合スコア587

Ruby on Rails 5

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

0グッド

1クリップ

投稿2020/08/09 03:10

rails5.2です。

商品ページを参照後、トップページを開くとクッキーを使って
最近見た商品を、最新5件表示しようとしてます。

以下を参考にしました。
Rails で jquery.cookie.js を使って閲覧履歴を表示してみた

トップページを開くと以下のエラーメッセージが表示されます。
Couldn't find Item with 'id'=<%= @item.id %>
イメージ説明

ブラウザのコンソールにはエラーは出てませんでした。

分かる方教えていただけないでしょうか?

トップページのview

ruby

1<h2>最近見た商品</h2> 2<% items = [] %> 3<% items = cookies[:watched_items].split(",") unless cookies[:watched_items].nil? %> 4<% items.each do |i| %> 5 <% item = Item.find(i) %> 6 <%= item.name %> 7<% end %>

javascript

1/* global $*/ 2$(document).on('turbolinks:load', function() { 3 var item = "<%= @item.id %>"; 4 var viewed_items = []; 5 6 // 既にクッキーが存在している場合は、ストリングを配列にする 7 if($.cookie("watched_items")){ 8 viewed_items = $.cookie("watched_items").split(","); 9 } 10 11 // 重複していなければ、itemを配列に追加 12 if($.inArray(item, viewed_items)<0){ 13 viewed_items.push(item); 14 } 15 16 // 5個以上ならば1つ削除 17 if (viewed_items.length >= 5){ 18 viewed_items.shift(); 19 } 20 21 // 配列をクッキ―に保存 22 $.cookie("watched_items", viewed_items); 23 24});

商品のshow.html.erb

ruby

1<h2>商品のページ</h2> 2<%= @item.id %>

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

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

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

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

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

guest

回答1

0

エラー情報を見た限り、クッキーの表示商品IDとして、<%= @item.id %>が登録されていると思われます。

ご提示いただいたjavascriptは、トップページで呼ばれているのでしょうか?
「表示した商品のIDをクッキーに追加する」という処理ですから、商品のshowページのみで、呼ばれるのが正しいかと思います。

投稿2020/08/09 09:26

YT0014

総合スコア1708

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問