【问题标题】:Set Default date to be "all-date" to datepicker将默认日期设置为“所有日期”到 datepicker
【发布时间】:2018-08-21 08:45:08
【问题描述】:

我的 Rails 应用程序中有一个日期选择器,可以从特定日期选择数据,但我想将该日期选择器默认设置为“所有日期”以显示所有数据。我该怎么做?

以下代码是我的日期选择器代码。

<div class="col-md-2 col-sm-6"> <!-- DATE PICKER -->
        <%= text_field_tag :date, @date.strftime("%m/%d/%Y"), data: {provide: 'datepicker'}, placeholder: I18n.t('admin.users.index.typing_searching_date'), class: 'form-control datepicker js-datepicker' %>
      </div>

这里是按日期查询的功能。我目前了解的是我只需要在该功能中进行编辑。但我不知道该怎么做。

 @comments = @comments.where('created_at >=? AND created_at <= ?', @date.beginning_of_day, @date.end_of_day)


def get_date
    if params[:date].present?
      date = Date.strptime(params[:date], "%m/%d/%Y")
      @date = date.in_time_zone
    else
      @date = DateTime.now.in_time_zone
    end
  end

【问题讨论】:

  • 我遇到了类似的问题。我们这样解决了 - 有一个选择,您可以选择 Current monthPrevious monthAll TimeCustom。选择自定义时,我们将显示日期选择器。我认为这应该适合你
  • 我对 Rails 很陌生,我不知道在哪里添加这些。你能检查我编辑过的问题吗? @MrShemek
  • 如果我理解正确,您的控制器中有这样的东西:Post.where(created_at: get_date),对吧?你能提供你使用get_date方法的代码吗?
  • @P.Boro ,是的...我编辑了我的问题,以便您现在可以看到
  • 只需在 @comments.where 行后添加 if params[:date].present?。如果您想显示所有日期,那么您不想按日期过滤,那么您不应该这样做:P

标签: ruby-on-rails datepicker


【解决方案1】:

这是我解决此问题的方法。

在视图中,

<% if @date.present? %>
          <%= text_field_tag :date, @date.strftime("%m/%d/%Y"), data: {provide: 'datepicker'}, placeholder: I18n.t('admin.users.index.typing_searching_date'), class: 'form-control datepicker js-datepicker' %>
        <% else %>
          <%= text_field_tag :date, '(Any Date)',data: {provide: 'datepicker'}, placeholder: I18n.t('admin.users.index.typing_searching_date'), class: 'form-control datepicker js-datepicker' %>
        <% end %>

在控制器中,

if @date.present?
    @comments = @comments.where('created_at >=? AND created_at <= ?', @date.beginning_of_day, @date.end_of_day)
    end

 if params[:date].present?
      date = Date.strptime(params[:date], "%m/%d/%Y")
      @date = date.in_time_zone
end

【讨论】: