如何使用rails 4过滤产品细节

时间:2014-06-21 04:38:32

标签: ruby-on-rails search

我正在开发一个应用程序,其中有两个模型:移动Brand和移动Product。每个品牌has_many :products

在索引页面中,我显示所有产品,左侧我想显示其他购物卡的范围,例如:

  

按价格搜索

     
      
  • 10000-15000
  •   
  • 15000-20000
  •   
  • 20000-25000
  •   
  • 价格> 25000
  •   
     

按内容搜索

     
      
  • 256 mb
  •   
  • 512 mb
  •   
     

按Cam搜索

     
      
  • 13 MP
  •   
  • 8 MP
  •   
  • 5 MP
  •   
     

按屏幕搜索

     
      
  • 少于3英寸
  •   
  • 3.0英寸 - 4.0英寸
  •   
  • 4.1英寸 - 4.9英寸
  •   

像这样我想在点击任何链接时显示它会显示详细信息。

所以请帮我如何在产品控制器中编写,它需要在控制器和不同的视图页面中创建不同的动作。 所以给我一些代码想法怎么做。

1 个答案:

答案 0 :(得分:0)

您可以使用范围来解决此问题。我将向您展示如何使用价格范围进行过滤,并且我相信相同的过程可以用于其他过滤器。

product型号

中使用此功能
class Product < ActiveRecord::Base
  ## other code
  scope :price_min, lambda{|min| where(['price >= ?', min])}
  scope :price_max, lambda{|max| where(['price <= ?', max])}
  ## other code
end
products_controller.rb中的

有这个:

class ProductsController < ApplicationController
  has_scope :price_min
  has_scope :price_max

  def index
   @products = Product.all
  end

  ## other code
end
你的app/views/products/index.html.erb中的

有这个:

<%= link_to '10000-15000', @products_path, price_min: 10000, price_max: 15000 %>
<%= link_to '15000-20000', @products_path, price_min: 15000, price_max: 20000 %>
<%= link_to '20000-25000', @products_path, price_min: 20000, price_max: 25000 %>

修改 还要确保在Gemfile中有这个

gem 'has_scope'

然后运行bundle命令。