gpt4 book ai didi

ruby-on-rails-3 - Rails 字段 "can' t 为空白”,即使它不是空白

转载 作者:行者123 更新时间:2023-12-03 00:51:43 24 4
gpt4 key购买 nike

我使用的是 Rails 3,但无法提交表单,因为其中一个字段未能通过 validates_presence_of。我的模型称为dinner,与日期选择器结合使用的字段称为date

views/dinners/new.html.erb:

<%= f.text_field :date,  id: "datepicker" %>  

models/dinner.rb:

attr_accessible :date
validates_presence_of :date

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

每当我填写所有字段(包括日期)时,我都会收到错误“日期不能为空”,即使它不为空。这是怎么回事?

最佳答案

我找到了答案。

我的 date 列的类型为 date,在验证之前 Rails 对其运行了 .to_date。不幸的是,datepicker我使用的创建美国 mm/dd/yy 格式的日期,Rails 无法处理该格式,因此 .to_date 返回 nil。这就是日期验证失败的原因:因为它确实为零,即使 POST 请求没问题。

我选择了简单的解决方案并更改了datepicker的默认日期,如图here

注意:对于我的日期选择器版本,我必须使用 format 而不是 dateFormat而且 必须使用 yyyy -mm-dd 而不是 yy-mm-dd 因为 Rails String#to_date 认为年份“13”实际上是“0013”而不是“2013” '.

关于ruby-on-rails-3 - Rails 字段 "can' t 为空白”,即使它不是空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14488129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com