Kiedy wygeneruje sobie scaffold i w modelu dodam np [quote]validates_presence_of :title, :description, :date[/quote]
to w wypadku wpisania pustego pola nad formularzem wyskakuje czerwona ramka z opisem bledu
[quote]Struktura bazy
id
title
description
date[/quote]
[quote]def add_article
if request.post? @temp = Article.new(params[:article])
if @temp.save
flash[:info] = “Artykul zostal zapisany w bazie danych”
redirect_to :action => “list_article”
end
end
end[/quote]
Walidacja dziala bo kiedy pole jest puste artykul nie zapisuje sie w bazie problem w tym ze nie jest wyswietlany blad.
@temp = Article.new(params[:article][/code]
To zastanów się jak chcesz nazywać tą zmienną wszystkomówiące @temp czy @article? error_messages_for wyświetli info o błędach zmiennej instancji @article, ale ty w kontrolerze wolisz operować na @temp. Kumasz swój błąd?
A co to za add_article, list_article? Staraj się używać nazw typu new create show itp.
Trochę bardziej elastyczne rozwiązanie. Oczywiście jeżeli jesteś pewien, że aplikacja nigdy nie będzie tłumaczona, to możesz spokojnie zostać przy powyższym wrzuceniu stringa do modelu.
<%= error_messages_for :user %>
<% form_for :user, :url => {:action => "update_date_deadline"} do |f| %>
<%= f.hidden_field :id, :value => user.id %>
</br><label>(RRRR-MM-DD)</label>
<%= f.text_field :deadline %>
<input id="inputsubmit7" type="submit" name="inputsubmit7" value="Dodaj" />
<% end %>
Model User:
validates_presence_of :deadline, :message => “nie może być pusty”
I to mi nie chce działać. W ogóle nie reaguje na walidacje. Modyfikuje pole jak jest puste.
PS. czy jest jakas walidacja odnosnie formatu daty? Zeby trzeba bylo wpisac w formacie RRRR-MM-DD
Tak właściwie, to do tego co chcesz zrobić, nie potrzebujesz nowej akcji. Zakładając że cały user jest poprawy, przechodzi walidację, możesz skierować ten formularz do akcji update i wywal akcję update_date_deadline