如何使用搜查
How use ransack
好吗?在另一个测试中,想学习洗劫,但我说的是 WTF,请看图片:
都是重复的,我知道为什么,我把Product.all放在index.html.erb中:
<%= search_form_for @q do |f| %>
<%= f.label :name_cont, "Name" %>
<br />
<%= f.search_field :name_cont %>
<br />
<%= f.label :hd, "Brand" %>
<br />
<%= f.collection_check_boxes :brand, Product.all, :brand, :brand %>
<br />
<%= f.label :hd, "HD" %>
<br />
<%= f.collection_check_boxes :hd, Product.all, :hd, :hd %>
(...)
<%= f.submit "Search" %>
<% end %>
在控制器中只有这个:
def index
@q = Product.ransack(params[:q])
@products = @q.result
end
uniq_value不工作,是错误。我想在搜索中单击时只显示一个值...例如,注册了 2 500 个 HD 笔记本,想只显示一个值为 500gb 的复选框,然后在单击时显示两个笔记本,明白吗?谢谢!
实现此目的的一种廉价而肮脏的方法是在特定字段上使用不同的 select,即:
<%= f.collection_check_boxes :brand, Product.select(:brand).distinct, :brand, :brand %>
和
<%= f.collection_check_boxes :hd, Product.select(:hd).distinct, :hd, :hd %>
这会导致 SQL 类似 SELECT DISTINCT brand FROM products
的查询。
如果可能的话,一种更简洁的方法是规范化您的数据库并创建一个名为 Brands
的模型和 link 带有品牌的产品,即产品属于一个品牌。
好吗?在另一个测试中,想学习洗劫,但我说的是 WTF,请看图片:
都是重复的,我知道为什么,我把Product.all放在index.html.erb中:
<%= search_form_for @q do |f| %>
<%= f.label :name_cont, "Name" %>
<br />
<%= f.search_field :name_cont %>
<br />
<%= f.label :hd, "Brand" %>
<br />
<%= f.collection_check_boxes :brand, Product.all, :brand, :brand %>
<br />
<%= f.label :hd, "HD" %>
<br />
<%= f.collection_check_boxes :hd, Product.all, :hd, :hd %>
(...)
<%= f.submit "Search" %>
<% end %>
在控制器中只有这个:
def index
@q = Product.ransack(params[:q])
@products = @q.result
end
uniq_value不工作,是错误。我想在搜索中单击时只显示一个值...例如,注册了 2 500 个 HD 笔记本,想只显示一个值为 500gb 的复选框,然后在单击时显示两个笔记本,明白吗?谢谢!
实现此目的的一种廉价而肮脏的方法是在特定字段上使用不同的 select,即:
<%= f.collection_check_boxes :brand, Product.select(:brand).distinct, :brand, :brand %>
和
<%= f.collection_check_boxes :hd, Product.select(:hd).distinct, :hd, :hd %>
这会导致 SQL 类似 SELECT DISTINCT brand FROM products
的查询。
如果可能的话,一种更简洁的方法是规范化您的数据库并创建一个名为 Brands
的模型和 link 带有品牌的产品,即产品属于一个品牌。