请帮我解决方案,我想根据这样的类别显示产品
eg: products
-sarees
-salwars
当我点击纱丽时,我想显示所有与纱丽相关的产品,当我点击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
我的 productscontroller.rb
def show
@category = Category.all
end
我的模型 category.rb
class Category < ActiveRecord::Base
has_many :products
end
模型 product.rb
class Product < ActiveRecord::Base
belongs_to :category
end
答案 0 :(得分:0)
@sreena,我首先建议让它尽可能简单,然后再添加AJAX
。
让我们说你的路线文件看起来像这样
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)
您的products_controller.rb
:
def index
@categories = Category.all
end
def show
@category = Category.find(params[:id])
end
现在你有一个基本的index
和show
工作!
在您完成工作AJAX
之后,如果它不是问题。
答案 1 :(得分:0)
解决此问题的一种方法是为类别下的产品设置嵌套控制器。像category /:category_id / products这样的东西。因此,此路线上的GET将直接搜索所提供类别下的所有产品。 在锚标签上,您将需要使用
链接到这些产品 - @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))}');
产品/ _product.html.slim部分
li
= product.name