我使用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