モデルに定義したrelated_productsがundefined methodになる

実現したいこと

商品詳細ページでその商品と関連した商品を表示するようにしたい

発生している問題・エラーメッセージ

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 コメント