Ruby On rails过滤器编号min和max

时间:2018-02-19 00:15:12

标签: ruby-on-rails ruby

嗨我需要输入最小数字和最大数字来显示所有车辆之间的https://www.lpauto.ca/used-cars-vancouver?Makes=Audi

这是我的表格

<%= form_for "",url: cars_path, role: "search", method: :get do %>
     <%= text_field_tag :searchp, @search_pricen_term,placeholder: "Min..." %>
     <%= text_field_tag :searchpx, @search_pricex_term,placeholder: "Max..." %> 
<% end %>

在索引中的控制器

if params[:searchp]
  @search_pricen_term = params[:searchp]
  @cars= @cars.search_by(@search_pricen_term)
end

在模型中

def self.search_by(search_pricen_term)
  where("price <= :search_pricen_term OR price >= :search_pricex_term ",
  search_pricen_term: search_pricen_term )
end

1 个答案:

答案 0 :(得分:0)

使用'scope'更新了模型类中的where条件    它接收最小值和最大值并返回所有汽车    在给定范围之间。    希望这会有所帮助。

在控制器中,将最小值和最大值都传递给模型。

  if params[:searchp] || params[:searchpx] 
    @search_pricen_term = params[:searchp]
    @search_pricex_term = params[:searchpx] 
    @cars = Car.between_range(@search_pricen_term, @search_pricex_term)
  end

在视图中,

    <%= form_for "",url: cars_path, role: "search", method: :get do %>
       <%= text_field_tag :searchp, @search_pricen_term,placeholder: "Min..." %>
       <%= text_field_tag :searchpx, @search_pricex_term,placeholder: "Max..." %> 
       <%= submit_tag "Submit" %>
     <% end %>

在模型中,

     scope :between_range, -> (min, max) { where("price >= ? OR price <= ?", min, max) }