我使用Rails 3并且未能提交表单,因为其中一个字段未能通过validates_presence_of
。我的模型名为dinner
,与日期选择器一起使用的字段名为date
。Rails字段“不能为空”,尽管它不是空白
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参数是否完全通过?如果是这样,格式是否正确?在尝试保存之前尝试注销'@ dinner'对象,看它是否有日期设置。 – MrTheWalrus
在这种情况下进行调查的另一件事是,它在轨道控制台上的表现如何。当你做'd = Dinner.new(:date =>“31/12/2012”)''d.errors'显示相同的“不能为空”? – berkes
感谢您的提示。当我注销时,'@ dinner'永远不会设置'日期',但在控制台上试一试很好。 – LonelyWebCrawler