ruby-on-rails 使用Rails & AJAX 按类别过滤产品

ffscu2ro  于 2023-02-06  发布在  Ruby
关注(0)|答案(1)|浏览(151)

我需要创建一个页面,将显示所选的过滤器产品。为简单起见,我将使用产品类别作为过滤器。
页面应包含2个区域:
1.产品陈列的地方。
1.显示类别的位置和"全部清除"按钮。

    • 方案:**

用户访问索引页面,所有的产品都显示。用户点击"主页类别",并获得属于此类别的所有产品。然后他点击"鞋类",现在他看到所有的产品都属于这两个类别("主页类别"或"鞋类类别")。用户点击"全部清除"按钮(以便重置所选类别),现在将显示所有类别中的所有产品。

我的代码:

我的模型Product、Category和连接表causes_products。

    • 类别**

class Category < ActiveRecord::Base has_and_belongs_to_many :products end

    • 产品**

class Product < ActiveRecord::Base has_and_belongs_to_many :categories end

    • 产品控制器:**
class ProductsController < ApplicationController
  def index
    @products = Product.all
    @categories = Category.all
  end
  def from_category
    @products = Product.joins(:categories).where(categories: { id: params[:cat_id] })
    respond_to do |format|
      format.js
    end
  end
end
    • 产品/索引. html. erb:**
<div class="grid">
  <%= render 'sidebar_menu' %>
  <%= render partial: 'product_grid', locals: { products: @products} %>
</div>
    • 产品/侧边栏菜单. html. erb:**
<% @categories.each do | cat | %>
<%= link_to cat.name, fetch_products_path(:cat_id => cat.id), :remote => true %>
<% end %>
    • 路由. rb**
get "/fetch_products" => 'products#from_category', as: 'fetch_products'
    • 产品/产品网格. html. erb:**
<div id="products_grid">
  <%= render partial: 'products_list', locals: { products: products } %>
</div>
    • 产品/产品列表. html. erb:**
<% products.each do |product| %>
    <div class="product_box">
      product.name
    </div>
<% end %>
    • 产品/来自类别. js. erb:**
$("#products_grid").html("<%= escape_javascript(render partial: 'products_list', locals: { products: @selected } ) %>");
    • 该代码只适用于一个选定的类别,但我希望它也能过滤两个或多个类别。我需要做哪些更改?**

谢谢。
谢谢你@max和@Jeffrey M Castro帮助我完成我的previous question
感谢sebastialonso的文章"How to partials & AJAX, dead easy"。

pxq42qpu

pxq42qpu1#

对于你的 AJAX 方法,下面是你可以使用的:

def from_category
  category_ids = params[:cat_ids]
  @products = Product.joins(:categories).where("categories.id IN (?)", category_ids)
  respond_to do |format|
    format.js
  end
end

要从表单中获取params[:cat_ids],请参见:Best way to get all selected checkboxes VALUES in jqueryhttps://api.jquery.com/checked-selector/

相关问题