【问题标题】:Rails 4 search between created_at datesRails 4 在 created_at 日期之间搜索
【发布时间】:2015-04-16 21:51:12
【问题描述】:

我是 Ruby on Rails 的初学者。我有一个反馈模型。我想搜索反馈数据库,以便使用 created_at 字段在选定日期范围内获得结果。所以我输入例如“14/04/15”在一个框中和 16/04/15”,当我单击搜索时,它会在键入的日期之间显示@feedbacks,稍后我将添加 jquery date-picker 以选择日期文本字段,但我需要先让其发挥作用。

搜索时没有任何反应!它们都保持原样。我有 3 个反馈,创建于 13/04/15、14/04/15、16/04/15 字段。我在第一个字段中输入 14/04/15,在第二个字段中输入 16/04/15,然后点击搜索。这应该按照 14/04/2015、16/04/15、13/04/15 的顺序提出反馈。

如果之前已经回答过这个问题,我很抱歉,但似乎没有任何帮助。我的反馈索引中有一个表格:

<%= form_tag(feedbacks_path, :method => "get") do %>
<%= text_field_tag :start_date, params[:start_date] %>
<%= text_field_tag :end_date, params[:end_date] %>
<%= submit_tag "Search", :name => nil %>
<% end %>

这在我的反馈控制器中:

 def index
 @feedbacks = Feedback.where("created_at >= :start_date AND created_at <= :end_date",
 {start_date: params[:start_date], end_date: params[:end_date]})
 @feedbacks = Feedback.where(user_id: current_user)
end

网址:

 http://localhost:3000/feedbacks?utf8=%E2%9C%93&start_date=14%2F04%2F2015&end_date=16%2F04%2F2015

宝石文件:

宝石'导轨','4.1.6'

红宝石 2.1.3p242

【问题讨论】:

  • 你有什么问题?
  • 运行这段代码会发生什么?
  • 没什么!它们都保持原样。我有 3 个反馈,创建于 13/04/15、14/04/15、16/04/15 字段。我在第一个字段中输入 14/04/15,在第二个字段中输入 16/04/15,然后点击搜索。这应该按照 14/04/2015、16/04/15、13/04/15 的顺序提出反馈。

标签: ruby-on-rails database forms search controller


【解决方案1】:

最后运行的语句是

@feedbacks = Feedback.where(user_id: current_user)

您只是获得了当前用户的原始反馈。该声明中没有使用您的日期。

【讨论】:

  • 那么我应该如何在该语句中添加日期?我尝试了一些愚蠢的方法,但我似乎无法让它发挥作用。
【解决方案2】:

简而言之,您应该像这样链接您的查询

def index @feedbacks = Feedback.where("created_at >= :start_date AND created_at <= :end_date", {start_date: params[:start_date], end_date: params[:end_date]}) @feedbacks = @feedbacks.where(user_id: current_user) end

您甚至可以使用范围条件缩短搜索:

def index @feedbacks = Feedback.where(created_at: [params[:start_date]..params[:end_date]]) @feedbacks = @feedbacks.where(user_id: current_user) end

【讨论】:

    猜你喜欢
    • 2021-06-13
    • 2012-12-11
    • 2019-07-28
    • 2012-09-30
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多