Ruby on rails 如何根据单击的类别筛选和显示所有产品

Ruby on rails 如何根据单击的类别筛选和显示所有产品,ruby-on-rails,ruby,Ruby On Rails,Ruby,请帮助我解决这个问题,我想根据这样的分类展示产品 eg: products -sarees -salwars Rails.application.routes.draw do resources :products end 当我点击sarees时,我想显示与sarees相关的所有产品;当我点击Salwars时,我想显示与Salwars相关的所有产品 这是我的密码 show.html.slim li a href="#{shop

请帮助我解决这个问题,我想根据这样的分类展示产品

 eg:  products
      -sarees
      -salwars 
Rails.application.routes.draw do
  resources :products
end
当我点击sarees时,我想显示与sarees相关的所有产品;当我点击Salwars时,我想显示与Salwars相关的所有产品

这是我的密码 show.html.slim

        li
        a href="#{shop_index_path}" 
          | Product  
          span.arrow ▼
        ul.sub-menu
         - @category.each do |cat|
          li
            a href="#" 
              =cat.name 
myproductscontroller.rb

def show
 @category = Category.all 
end 
class Category < ActiveRecord::Base
   has_many :products
end 
class Product < ActiveRecord::Base
  belongs_to :category
end 
我的型号category.rb

def show
 @category = Category.all 
end 
class Category < ActiveRecord::Base
   has_many :products
end 
class Product < ActiveRecord::Base
  belongs_to :category
end 
类别
型号产品.rb

def show
 @category = Category.all 
end 
class Category < ActiveRecord::Base
   has_many :products
end 
class Product < ActiveRecord::Base
  belongs_to :category
end 
类产品
@sreena,我首先建议让它尽可能简单,然后再将
AJAX
添加到组合中

假设您的routes文件如下所示

 eg:  products
      -sarees
      -salwars 
Rails.application.routes.draw do
  resources :products
end
show.html.slim
更改为
index.html.slim
并编辑:

 ul.sub-menu
     - @categories.each do |cat|
      li
        = link_to cat.name, category_path(cat)
以及您的
产品\u controller.rb

def index
  @categories = Category.all 
end

def show
  @category = Category.find(params[:id])
end
现在您有了一个基本的
索引
显示
工作


在您使用了
AJAX
之后,如果这不是一个问题的话。

@sreena,我会首先建议让它尽可能简单,然后再将
AJAX
添加到混合中

假设您的routes文件如下所示

 eg:  products
      -sarees
      -salwars 
Rails.application.routes.draw do
  resources :products
end
show.html.slim
更改为
index.html.slim
并编辑:

 ul.sub-menu
     - @categories.each do |cat|
      li
        = link_to cat.name, category_path(cat)
以及您的
产品\u controller.rb

def index
  @categories = Category.all 
end

def show
  @category = Category.find(params[:id])
end
现在您有了一个基本的
索引
显示
工作


在您使用了AJAX之后,如果这不是一个问题的话。

一种方法是为类别下的产品使用嵌套控制器。比如category/:category\u id/产品。因此,在这条路线上搜索将直接搜索供应类别下的所有产品。 在锚定标签上,您将希望使用

 - @category.each do |cat|
    li
      =link_to cat.name, category_products_path(cat), remote: true 

     #products
在产品控制器中,我们定义了一个索引操作

 def index
    @category = Category.find(params[:category_id])
    @products = @category.products
 end
要显示产品,请定义products/index.js.slim

 $('#products').html('#{escape_javascript(render(@products))}');
和products/_product.html.slim部分

 li
   = product.name

实现这一点的一种方法是为类别下的产品使用嵌套控制器。比如category/:category\u id/产品。因此,在这条路线上搜索将直接搜索供应类别下的所有产品。 在锚定标签上,您将希望使用

 - @category.each do |cat|
    li
      =link_to cat.name, category_products_path(cat), remote: true 

     #products
在产品控制器中,我们定义了一个索引操作

 def index
    @category = Category.find(params[:category_id])
    @products = @category.products
 end
要显示产品,请定义products/index.js.slim

 $('#products').html('#{escape_javascript(render(@products))}');
和products/_product.html.slim部分

 li
   = product.name

您可以触发类别的
change
事件,并发送
ajax
请求以查找所属产品并进行替换。您可以触发类别的
change
事件,并发送
ajax
请求以查找所属产品并进行替换。感谢您的帮助,很抱歉,这对我不起作用。我没有分类控制器,只是我通过种子添加分类数据。RBI通过
种子添加很好。rb
但是应该有一个控制器来处理请求:-)谢谢你的帮助,bt很抱歉这对我不起作用。我没有分类控制器,只是通过种子添加分类数据。rbit很好,您可以通过
种子添加。rb
但是应该有一个控制器来处理请求:-)