将日期表保存到ruby变量

时间:2013-07-30 21:32:17

标签: ruby-on-rails ruby ruby-on-rails-3

我正在尝试在我的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选项 - 用户输入两个日期,他们坚持使用方法而不刷新,然后当重置日期时,它会恢复为默认值。

感谢您的帮助!

0 个答案:

没有答案