我正在使用 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
最佳答案
您已将表单字段命名为
startdate
和enddate
但你的 Controller 正在寻找start_date
和end_date
。请进行这些匹配,并让我们知道这是否可以解决问题。我认为
@reports.blank?
照顾(@reports.nil? || @reports.empty?)
只需一个命令即可。
关于javascript - Rails 日期选择器 ActiveRecord 查找不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33093793/