0

我是这个 Rails 世界的新手,如果错误太明显,我很抱歉。

我正在构建一个搜索表单。我设法比较了字符串。但是,我正在为约会而苦苦挣扎。

这是以下形式:

= select_datetime Date.today, :prefix => :search_start_date

这是我正在尝试的查询(注意:事件中有效列中的开始日期)

 @events = @events.where("start_date > ?", "%#{params[:search_start_date]}%")

因为一个是日期,另一个是日期时间,我虽然必须投射它们。但是,我尝试过的任何事情都没有奏效。

有什么建议么?谢谢

4

3 回答 3

1

您可以将参数放在 Time 对象中:

@time = Time.new(params[:search_start_date][:year], params[:search_start_date][:month],params[:search_start_date][:day] , params[:search_start_date][:hour], params[:search_start_date][:minute])
@events = Event.where("start_date > ?", @time)

它应该工作。但是,您应该将 start_date 设置为 datetime 类型。事实上,如果您有一个日期为 2012 年 4 月 17 日的事件,并且您正在寻找在 2012 年 4 月 17 日 9:00 之后开始的@events,则不会显示该事件。仅显示从 4 月 18 日及之后开始的活动。

于 2012-04-17T08:56:46.897 回答
0

你能试试这个它会给你更好的结果吗

 @time = params[:search_start_date]+" "+"00:00:00"

 @events = @events.where("start_date > ?", @time)

试试看,它会给你带来大于 00:00:00 的结果

于 2012-04-17T08:42:27.757 回答
0

尝试使用 parse :

 @events = @events.where("start_date > ?", "%#{Date.parse(params[:search_start_date])}%") if !params[:search_start_date].nil?
于 2012-04-17T10:24:42.667 回答