javascript - Rails 日期选择器 ActiveRecord 查找不起作用

标签 javascript jquery ruby-on-rails activerecord datepicker

我正在使用 bootstrap-datepicker-rails gem 来允许我的用户选择一个日期范围,以便他们可以在给定范围内提取报告。我相信我已经正确设置了它,但是,参数看起来并没有传递到查询中。我做错了什么?

这些是正在传递的参数(可能是日期格式吗?):

Parameters: {"utf8"=>"✓", "authenticity_token"=>"6ilji+8uk2/6F115tYjtwlw1JSU0KNqqUc1O26GG4Uw=", "startdate"=>"10/01/2015", "enddate"=>"10/03/2015", "commit"=>"Update"}

这是我注意到日志中没有传递任何范围的地方:

Report Load (0.4ms)  SELECT  "reports".* FROM "reports"  WHERE "reports"."deleted_at" IS NULL AND "reports"."company_id" = $1 AND ("reports"."created_at" BETWEEN NULL AND NULL)  ORDER BY "reports"."created_at" DESC LIMIT 30 OFFSET 0  [["company_id", 1]]

reports/index.html.erb

<%= form_tag reports_index_path, method: :post, :class => "form-inline" do %>
  <div class="form-group">
    <%= text_field_tag(:start_date, ((@reports.nil? || @reports.empty?) ? '' : @reports.last.created_at), class: "form-control", name: "startdate", data: {"behaviour" => "datepicker"}) %>
    <p class="text-center">to</p>
    <%= text_field_tag(:end_date, ((@reports.nil? || @reports.empty?) ? '' : @reports.first.created_at), class: "form-control", name: "enddate", data: {"behaviour" => "datepicker"}) %>
   </div>
   <br/>
   <br/>
   <%= submit_tag "Update", class: "update-button" %>
<% end %>

controllers/reports_controller.rb

class ReportsController < ApplicationController

  def index
    @company = current_user.company

    @locations = if @company
      current_user.company_locations.order(:name)
    else
      []
    end

    unless @company.nil? || @company.reports.empty?
      if request.post?
        @reports = @company.reports.where(created_at: report_params[:start_date]..report_params[:end_date]).order(created_at: :desc).paginate(page: params[:page], :per_page => 30)
      else
        @reports = @company.reports.order(created_at: :desc).paginate(page: params[:page], :per_page => 30)
      end
    end
  end

  private

    def report_params
      params.permit(:start_date, :end_date)
    end

end

最佳答案

  1. 您已将表单字段命名为 startdateenddate但你的 Controller 正在寻找 start_dateend_date 。请进行这些匹配,并让我们知道这是否可以解决问题。

  2. 我认为@reports.blank?照顾(@reports.nil? || @reports.empty?)只需一个命令即可。

关于javascript - Rails 日期选择器 ActiveRecord 查找不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33093793/

相关文章:

javascript - 在其他 jQuery 插件中调用自定义 jQuery 插件

javascript - 使用 <canvas> 处理大型 'map'

javascript - 在 Javascript 中显示 html 标签 onClick 的源代码行号

javascript - JS/CSS 旋转 DIVS 以在任何屏幕中间相遇

ruby-on-rails - Uuid 和 Redis

ruby-on-rails - 如何使用 Rspec 测试 Controller - #show action

javascript - 如何防止 Chrome 控制台压缩字符并打印每个字符?

javascript - 如何将非方形二维数组旋转两次以获得所有可能的旋转?

javascript - JQuery Each 不等待内部函数完成

ruby-on-rails - 从现在开始获得明年的正确方法