gpt4 book ai didi

mysql - 使用搜索逻辑的日期条件

转载 作者:行者123 更新时间:2023-11-30 21:22:57 24 4
gpt4 key购买 nike

Rails 插件 - Searchlogic ,来自二进制逻辑 - 提供按日期过滤的能力。我的表格是这样设置的...

<% form_for @search do |f| %>
<%= f.label :start %> <%= f.select :due_at_after, [[['','']],['November', '2009-11-01'.to_date],['December', '2009-12-01'.to_date]] %><br>
<%= f.label :end %> <%= f.select :due_at_before, [[['','']],['December', '2009-12-01'.to_date],['January', '2010-01-01'.to_date]] %>
<%= f.submit 'Search' %>
<% end %>

但是,我从 Controller 中生成的@search 对象返回的日期...

@search = Task.with_member(current_user).search(params[:search])

正在生成一个看起来像这样的日期参数

{:due_at_after=>Sat, 31 Oct 2009 20:00:00 EDT -04:00}

对于这两种格式,表单将不会显示选中的下拉列表。看起来 searchlogic 对象中的格式也使用了时区调整时间。

关于如何处理这个问题有什么想法吗?

最佳答案

您的问题的很大一部分似乎正在发生,因为您正在将字符串转换为日期,并将日期转换回字符串。我相信您可能做的比您需要做的更多。

HTML 表单并不真正“理解”日期——它们只是“理解”字符串。因此可以将字符串而不是日期传递给它们。换句话说,可以删除 to_date .

<% form_for @search do |f| %>
<%= f.label :start %>
<%= f.select :due_at_after,
['November', '2009-11-01'],['December', '2009-12-01']],
:include_blank => true
%>
<br/>
<%= f.label :end %>
<%= f.select :due_at_before,
[['December', '2009-12-01'],['January', '2010-01-01']],
:include_blank => true
%>
<%= f.submit 'Search' %>
<% end %>

此外,我更喜欢使用 :include_blank => true而不是 [['','']] (在我看来,更易于阅读),我使用了一个封闭的 <br/>标签(标准的 html 内容 - 也许您打错了字?)。

顺便说一句,如果你想指定一个日期,你可以使用一个日期构造函数。与创建字符串并从中解析日期相比,编写起来更短,执行起来更快。

#Date(2009,11,1) is faster, shorter, and equivalent
Date(2009,11,1) == '2009-11-01'.to_date # --> true

关于mysql - 使用搜索逻辑的日期条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1829477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com