0

在 Rails 中检查日期与一天的最佳方法是什么?

我有一个登记册,某些登记册在某些日子进行,我想做的是限制可选择的日期以匹配日期,即如果登记册设置为星期一 15:00,那么日期选择应该只提供日期是星期一,即 2013 年 4 月 1 日、2013 年 4 月 8 日、2013 年 4 月 15 日等。

这是我当前寄存器的截图:

在此处输入图像描述

我的表单使用simple_formgem,并具有以下简单输入:

<%= f.input :date %>

编辑:这是我的模型,应 cthulhu 的要求

class Register < ActiveRecord::Base
  has_many :student_registers
  has_many :students, :through => :student_registers
  belongs_to :event
  attr_accessible :date, :student_ids, :module_class_id, :event_id
end
4

2 回答 2

2

Date 类有很多有用的方法,比如

>> d = Date.today
=> Fri, 05 Apr 2013
>> d.monday?
=> false
>> d.friday?
=> true
>> d.wday
=> 5

写一个验证方法应该就够了:

class Register < ActiveRecord::Base
  validates_each :date do |record, attr, value|
    record.errors.add(attr, "Must be #{event.day}") unless value.wday == Date.parse(event.day).wday # I assume 'event.day' holds a weekday as a String, e.g. 'Monday'
  end
end
于 2013-04-05T15:32:46.977 回答
0

可能的日期是否存储在数据库表中?如果是这样,那么做一个集合选择怎么样,它允许你过滤掉你想要的值。就像是:

<%= f.collection_select(:date, Dates.all.where(:day => 5), :id, :name, :prompt => 'Select') %>

将 "Dates.all.where(:day => 5)" 替换为您拥有的任何日期组以及您想要的任何条件。

于 2013-04-05T15:58:35.957 回答