我正在嘗試使用ActiveRecord示波器創建一個記錄過濾系統,但我被卡在了有相同模型的兩個過濾器的地方。我試圖篩選產品brand_id: 1
和brand_id:2
在軌道中使用示波器進行過濾
我Product
模型中定義的brand
範圍如下:
class Product < ActiveRecord::Base
belongs_to :brand
scope :brand, lambda{|brand| where('brand_id = ?', brand)}
end
我想過濾的產品對我categories/show
視圖和CategoriesController
看起來像這樣:
class CategoriesController < ApplicationController
has_scope :brand
def show
@category = Category.find(params[:id])
@products_by_category = apply_scopes(Product).where(category_id: @category).load
@brands = @category.brands
end
end
的categories/show
看法是這樣的:
<% @products_by_category.each do |product| %>
<h2><%= product.name %></h2>
<% end %>
我使用這種形式做過濾:
<%= form_tag @category_path, method: get do %>
<% @brands.each do |brand| %>
<span class="filter_name"><%= brand.name%>:</span>
<span> <%= check_box_tag :brand, brand.id, false,
class: 'filter_check_box' %> </span>
<% end %>
<%=submit_tag 'filter'%>
<% end %>
問題是,當我選擇在check_boxes不止一個品牌,它過濾僅在第一個參數的產品;
例如,如果我過濾與品牌與:id 1
和:id 2
並提交表單,它 請求URL是這樣的:http://localhost:3000/categories/1?&brand=1&brand=4
和查詢的陣列僅與brand=1
過濾。我希望結果由兩個參數過濾。生成的網址更正確或應該是: http://localhost:3000/categories/1?&brand=1,4
?
它仍然無法正常工作,它將'brand_ids []'作爲單個參數傳遞,而不是brand_ids數組。該參數是否與該範圍的名稱匹配? –
在仔細檢查了您的表單設置和您遇到的問題後,我在發送參數的GET限制中添加了一條評論。 –
你的第二個鏈接告訴我我需要知道什麼,因此我會接受你的答案。 –