Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.2 在RubyonRails中搜索日期字段_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 3.2 在RubyonRails中搜索日期字段

Ruby on rails 3.2 在RubyonRails中搜索日期字段,ruby-on-rails-3.2,Ruby On Rails 3.2,我有我的姓名、电子邮件和地址的搜索栏。我添加了搜索姓名和电子邮件字段。对于日期字段,我添加了提示文本“日期应为MM-DD-YYYY格式”,我希望用户仅以这种格式输入日期。如果以该格式输入日期,则我希望显示所有具有该日期的记录。我的搜索结果是字符串格式的,例如“12-22-2015”。我希望显示其“创建日期”字段为该字段的所有日期。对于名称和电子邮件,我的查询如下:@messages=Message.includes(:user)。选择('messages.*,users.name')。其中(“u

我有我的姓名、电子邮件和地址的搜索栏。我添加了搜索姓名和电子邮件字段。对于日期字段,我添加了提示文本“日期应为MM-DD-YYYY格式”,我希望用户仅以这种格式输入日期。如果以该格式输入日期,则我希望显示所有具有该日期的记录。我的搜索结果是字符串格式的,例如“12-22-2015”。我希望显示其“创建日期”字段为该字段的所有日期。对于名称和电子邮件,我的查询如下:
@messages=Message.includes(:user)。选择('messages.*,users.name')。其中(“users.name-ilike?或messages.to-ilike?”,“%{@query}%”,“%{@query}%”。分页(:page=>params[:page],:per\u page=>5)
。还需要修改已创建字段的上述查询。

请尝试以下操作

@messages = Message.includes(:user).select('messages.*, users.name').where("users.name ilike ? OR messages.to ilike ? OR messages.created_at like ? " ,"%#{@query}%", "%#{@query}%", Date.parse("%#{@query}%", '%MM-%DD-%YYYY')).paginate(:page => params[:page], :per_page => 5)

尝试以下查询以显示相同的日期记录

@messages = Message.includes(:user).select('messages.*, users.name').where("users.name ilike ? OR messages.to ilike ? OR date(messages.created_at) = ? " ,"%#{@query}%", "%#{@query}%", "#{@query.to_date}").paginate(:page => params[:page], :per_page => 5)

ilike and like不适用于日期字段。它给出了错误:ActiveRecord::StatementInvalid:PG::UndefinedFunction:error:operator不存在:没有时区的时间戳~~*未知将发生错误:ActiveRecord::StatementInvalid:PG::UndefinedFunction:error:operator不存在:没有时区的时间戳~~*未知行1:…es。要像“%06-01-2015%”或messages.created_位于ilike'201…My@query为:“10-07-2015”,其格式为MM-DD-YYYY。我尝试了您的查询,但得到的结果为空。此查询语法对我来说绝对正常。实际上,“10-07-2015”是一种字符串类型,在没有转换的情况下以datetime类型创建,查询将不起作用。