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 %>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。