Używam Rails 3 i nie przesłać formularza, ponieważ jedno z pól nie przechodzi validates_presence_of
. Mój model nazywa się dinner
, a pole, które jest używane w połączeniu z datepicker, nazywa się date
.Pole Railsy "nie może być puste", nawet jeśli nie jest puste
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
Zawsze, gdy wypełniam wszystkie pola, w tym date
, pojawia się błąd "Data nie może być pusta", nawet jeśli nie jest pusta. Co tu się dzieje?
Zwykle, gdy coś takiego się dzieje, uważam, że jest to parametr, który nie został zaliczony tak, jak powinien. Sprawdź dziennik serwera. Czy parametr: date jest w ogóle przekazywany? Jeśli tak, czy jest poprawnie sformatowany? Spróbuj wylogować się z obiektu '@ dinner', zanim spróbujesz go zapisać, sprawdź, czy ma ustawiony dat. – MrTheWalrus
Inną rzeczą do zbadania w takich przypadkach jest zachowanie na konsoli szyn. Kiedy wykonujesz 'd = Dinner.new (: date =>" 31/12/2012 ")' czy 'd.errors' pokazuje to samo" nie może być puste "? – berkes
Dzięki za porady. '@ dinner' nigdy nie ma ustawionej daty, kiedy ją wylogowuję, ale jej wypróbowanie na konsoli działa dobrze. – LonelyWebCrawler