実現したいこと
商品詳細ページでその商品と関連した商品を表示するようにしたい
発生している問題・エラーメッセージ
undefined method `related_products' for #<Spree::Product:0x000055ab186e4c68>
該当のソースコード
app/models/spree/product_decorator.rb
module Spree::ProductDecorator def related_products Spree::Product. in_taxons(taxons). where.not(id: id). distinct end Spree::Product.prepend self end
app/controllers/potepan/products_controller.rb
class Potepan::ProductsController < ApplicationController def show @product = Spree::Product.find(params[:id]) @related_products = @product.related_products.includes(master: [:images, :default_price]).limit!(4) end end
app/views/potepan/products/show.html.erb (一部抜粋)
<% @related_products.each do |related_product| %> <div class="col-md-3 col-sm-6 col-xs-12"> <div class="productBox"> <%= link_to potepan_product_path(related_product.id) do %> <div class="productImage clearfix"> <% image = related_product.images.first %> <%= image_tag(image.attachment(:small)) %> </div> <div class="productCaption clearfix"> <h5><%= related_product.name %></h5> <h3><%= related_product.display_price %></h3> </div> <% end %> </div> </div> <% end %>
試したこと
モデルの名前が違うのかと思い、products_decorator.rbとしてみたが結果は変わりませんでした。
わからないこと
モデルに定義したrelated_productsがコントローラで使用できないのはなぜでしょうか?
0 コメント