0

我正在尝试在我的 rails 应用程序中制作日期范围表单,因此用户可以输入两个日期,这些日期将发布到查询以从应用程序连接的 API 返回结果。

我的模型如下所示:它允许第一个日期和第二个日期默认创建上周的日期范围,但它应该接受覆盖默认值的选项......

class Day
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming

attr_accessor :first_day, :second_day

def initialize(attributes = {})
  attributes.each do |name, value|
    send("#{name}=", value)
  end
end

def self.monday(options = {})
  if options[:first_day]
    return Date.parse(options[:first_day])
  else
    d = Date.today
    seven_days_ago = (d - 7)
    seven_days_ago.beginning_of_week
  end
end

#defines the end of last week for the query
def self.sunday(options = {})
  if options[:second_day]
    return Date.parse(options[:second_day])
  else
    d = Date.today
    seven_days_ago = (d - 7)
    seven_days_ago.end_of_week
  end
end

  def persisted?
    false
  end
end

形式:

<%= form_for @day do |f| %>
  <div class="field">
    <%= f.label 'Beginning Date' %>
    <%= f.datepicker :first_day, :size => 6 %>
    <%= f.label 'End Date' %>
    <%= f.datepicker :second_day, :size => 6 %>
  </div>
  <div class="actions">
    <%= f.submit 'Submit' %>
  </div>
<% end %>

和控制器:

def new
  @day = Day.new
end

# POST /days
# POST /days.json
def create
  @day = Day.new(params[:day])
  if @day.valid?
    redirect_to root_url
  end
end

我目前正在访问我的一些控制器中的查询中的 Day.monday 和 Day.sunday 方法。这些值总是最终成为默认值,即使用户通过表单发布其他日期(想法是覆盖默认值)。

我更喜欢 javascript 选项 - 用户输入两个日期,他们坚持使用方法而不刷新,然后当日期重置时,它会恢复为默认值。

谢谢你的帮助!

4

0 回答 0