【发布时间】:2011-08-11 11:20:21
【问题描述】:
我想搜索给定日期范围内的数据。我有一个包含名称、地点、start_at 和 end_at 详细信息的数据库。我可以通过在控制器中定义查找方法来搜索名称和地点。以下是我的控制器代码。
def find
@events=Event.find(:all, :conditions=>["venue = ? OR name = ?", params[:search_string], params[:search_string]])
end
然后它会找到地点或名称。但是当我将 start_at 添加到这段代码中时,它会返回一个异常。如何从数据库中搜索相关的日期范围? lz有人可以帮助我吗?我正在使用 postgresql 和 ruby 1.8.7 和 rails 2.3.8 版本。
我改变了我的查找方法如下...
def find
if (params[:search_string])
@events=Event.find(:all, :conditions=>["venue = ? OR name = ?", params[:search_string], params[:search_string]])
else
@events= Event.all(:conditions => ["start_at >= ? AND end_at <= ?", params[:start_at], params[:end_at]])
end
end
首先 if 语句正常工作。但其他部分不起作用。也不例外。它不会从数据库中检索与日期相关的数据。由于未检索数据,我将此 if 语句添加到我的代码中。有人可以帮我纠正第二部分吗?我在搜索文本框中输入日期。但它不会检索任何数据。
【问题讨论】:
-
什么异常?你是怎么
add start_at into this code的? -
start_at 是日期变量,我将其添加为 def find @events=Event.find(:all, :conditions=>["venue = ? OR name = ? OR start_at = ?", params[: search_string], params[:search_string],, params[:search_string]]) 结束
-
您的示例中的 start_at 是 STRING 而不是 DATE。
-
是的 start_at 是一个日期....我怎样才能改变这个?
-
如果问题尚未回答,为什么要将答案标记为已接受?如果人们认为您的问题已得到解答,他们将不会再看它。
标签: ruby-on-rails ruby