【发布时间】:2011-03-18 17:53:45
【问题描述】:
我的 Rails 应用程序中有一个模型支持表单中的日期字段:
<%= f.date_select :birthday,
{:start_year => Time.now.year,
:end_year => 1900,
:use_short_month => true,
:order => [:month, :day, :year],
:prompt => {:month => 'Month', :day => 'Day', :year => 'Year'}},
{:class => 'year',
:id => 'user_birthday'}
%>
正在模型代码中使用以下方法对其进行验证:
validates_presence_of :birthday, :message => 'is a required field'
不幸的是,如果用户输入了部分值(例如年份),表单仍会提交而不会出错。相反,一个时髦的日期值被写入数据库。如何将所有三个字段都设为必填?
我想为此编写一个自定义验证,但我不知道如何正确访问生日元素的各个部分。我该怎么做?
谢谢! 萌
【问题讨论】:
-
我注意到你没有
:include_blank => true。甚至可以留一个空白吗?如果您将年份设置为 2000 年,您会得到什么日期?此外,:start_year 应该早于 :end_year。 -
嗨 mckeed,
:prompt => {:month => 'Month', :day => 'Day', :year => 'Year'}为月、日和年插入空白默认值。:end_year小于:start_year因为我想要按顺序排列的值。
标签: ruby-on-rails activerecord