如何在ruby rails中搜索两个日期之间的搜索?

时间:2012-08-31 20:07:31

标签: ruby-on-rails ruby jruby

好的,所以我需要进行如下设置的搜索:

从:(搜索字段)收件人:(搜索字段)

它只需要显示这些字段之间的日期等于或介于这些字段之间。 我该怎么做?

4 个答案:

答案 0 :(得分:4)

这是用Rails guides写的,第2.2.1段:

Client.where("created_at >= :start_date AND created_at <= :end_date", {:start_date => params[:start_date], :end_date => params[:end_date]})

答案 1 :(得分:0)

你可以写下面的条件,

User.where(“created_at&gt; =?and end_date&lt; =?”,from_date,end_date),其中
from_date,end_date - &gt;你需要将from_date和end_date存储在变量

希望它有所帮助!!

答案 2 :(得分:0)

您可以使用范围进行此类搜索。例如:

User.where(registred_at: from_field..to_field)

答案 3 :(得分:0)

首先在form_tag搜索中设置你的参数

= form_tag foo_path(@foo), :method => :get do
  = text_field_tag :start_date, params[:start_date]
  = text_field_tag :end_date, params[:end_date]
  = submit_tag "Search", :class => "btn btn-primary"

并且最重要的是如果您的搜索是索引而不是

,则将您的定义设置为控制器中的参数
def index
  @foos = Foo.all
  if params[:start_date].present?
    start_date = Date.parse(params[:start_date])
    @foos = @foos.where("foo.foo_date >= ?", start_date)
  end
  if params[:end_date].present?
    start_date = Date.parse(params[:end_date])
    @foos = @foos.where("foo.foo_date >= ?", end_date)
  end
end