如何在 rails 的类别下显示产品
how to show products under the categories on rails
我正在开发一个 rails 应用程序并在某个类别的显示页面上,我想显示在该类别下找到的所有产品
这是我的
显示在类别中的是
def show
@products = Category.friendly.where(params[:name])
end
在我看来我是这样的
<% @products.each do |product| %>
<%= link_to product_path(id: product.slug, category_name: product.category.name), class: "card" do %>
<div class="product-image">
<%= image_tag product.productpic.url if product.productpic? %>
</div>
<div class="product-text">
<h2 class="product-title"> <%= product.name %></h2>
<h3 class="product-price">£<%= product.price %></h3>
</div>
<% end %>
<% end %>
这是我的产品型号
class Product < ApplicationRecord
belongs_to :category
mount_uploader :productpic, ProductpicUploader
has_many :order_items
acts_as_taggable
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
default_scope { where(active: true) }
end
我的分类是这样的
class Category < ApplicationRecord
has_many :products
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
end
我做错了什么?
您正在执行错误的查询。你正在服用 category
这很好,但你必须服用相关的 products
这就是你所需要的。
应该是,
@products = Category.friendly.where(name: params[:name]).first.products
然后在视图代码中,您可以迭代一个类别的产品。
您找到的是类别类别,而不是产品:
def show
@categories = Category.friendly.where(params[:name])
end
如果你有适当的关系,你可以迭代给定类别中的每个产品。由于方法 where
returns 关系,首先你需要遍历它。
<% @categories.each do |category| %>
<% category.each do |product| %>
<div class="product-category">
Category:
<%= product.category.name %>
</div>
<div class="product-text">
<h2 class="product-title"> <%= product.name %></h2>
<h3 class="product-price">£<%= product.price %></h3>
</div>
<% end %>
<% end %>
试试这个,
def show
category = Category.friendly.find_by_name(params[:name])
@products = category.products
end
我正在开发一个 rails 应用程序并在某个类别的显示页面上,我想显示在该类别下找到的所有产品 这是我的
显示在类别中的是
def show
@products = Category.friendly.where(params[:name])
end
在我看来我是这样的
<% @products.each do |product| %>
<%= link_to product_path(id: product.slug, category_name: product.category.name), class: "card" do %>
<div class="product-image">
<%= image_tag product.productpic.url if product.productpic? %>
</div>
<div class="product-text">
<h2 class="product-title"> <%= product.name %></h2>
<h3 class="product-price">£<%= product.price %></h3>
</div>
<% end %>
<% end %>
这是我的产品型号
class Product < ApplicationRecord
belongs_to :category
mount_uploader :productpic, ProductpicUploader
has_many :order_items
acts_as_taggable
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
default_scope { where(active: true) }
end
我的分类是这样的
class Category < ApplicationRecord
has_many :products
extend FriendlyId
friendly_id :name, use: [:slugged, :finders]
end
我做错了什么?
您正在执行错误的查询。你正在服用 category
这很好,但你必须服用相关的 products
这就是你所需要的。
应该是,
@products = Category.friendly.where(name: params[:name]).first.products
然后在视图代码中,您可以迭代一个类别的产品。
您找到的是类别类别,而不是产品:
def show
@categories = Category.friendly.where(params[:name])
end
如果你有适当的关系,你可以迭代给定类别中的每个产品。由于方法 where
returns 关系,首先你需要遍历它。
<% @categories.each do |category| %>
<% category.each do |product| %>
<div class="product-category">
Category:
<%= product.category.name %>
</div>
<div class="product-text">
<h2 class="product-title"> <%= product.name %></h2>
<h3 class="product-price">£<%= product.price %></h3>
</div>
<% end %>
<% end %>
试试这个,
def show
category = Category.friendly.find_by_name(params[:name])
@products = category.products
end