Lon*_*ler 9 validation ruby-on-rails-3
我正在使用Rails 3并且无法提交表单,因为其中一个字段无法通过validates_presence_of.我的模型被调用dinner,并且调用与datepicker结合使用的字段date.
views/dinners/new.html.erb:
<%= f.text_field :date, id: "datepicker" %>
Run Code Online (Sandbox Code Playgroud)
models/dinner.rb:
attr_accessible :date
validates_presence_of :date
Run Code Online (Sandbox Code Playgroud)
dinners_controller.rb:
def create
@dinner = Dinner.new params[:dinner]
if @dinner.save
flash[:notice] = "Dinner created successfully."
redirect_to controller: 'dinners'
else
flash.now[:alert] = @dinner.errors.full_messages.join("<br>").html_safe
render action: "new"
end
end
Run Code Online (Sandbox Code Playgroud)
每当我填写所有字段,包括date,我都会收到错误"日期不能为空",即使它不是空白.这里发生了什么?
我找到了答案。
我的date列的类型为date,并且在验证之前,Rails都.to_date在上面运行。不幸的是,我使用的日期选择器会以mm/dd/yyRails无法处理的美国格式创建日期,因此.to_date返回nil。这就是日期未能通过验证的原因:因为即使POST请求很好,日期也实际上为零。
我选择了最简单的办法,改变日期选择器的默认日期,如图所示这里。
注意:对于我的datepicker版本,我不得不使用format而不是dateFormat,并且还不得不使用yyyy-mm-dd而不是,yy-mm-dd因为Rails String#to_date认为年份“ 13”实际上是“ 0013”而不是“ 2013”。
| 归档时间: |
|
| 查看次数: |
5755 次 |
| 最近记录: |