Witam,
Mam taki problem… Czy da się już w formularzu nadać pewne wartości zmiennym? Chodzi mi o coś takiego
<%= form_tag :action => "akcja", :id => @post %>
<%= datetime_select "comment", "posted_at" %>
<%= submit_tag "Dodaj" %>
<% end_form_tag%>
Ale nie chciałbym by było widać okienka z wybieraniem czasu. Czy w formularzu można zrobić coś jakby posted_at = Time.now ? Podobnie chciałbym zrobić z
<% if logged_in? %>
<% author = current_user.login %>
<% end %>
. Czy to wszystko będę musiał zrobić z poziomu kontrolera, modelu pisząc funkcję create?
Ww. sytuacja nie odzwierciedli rzeczywistosci bo nie bedzie to posted_at tylko czas kiedy renderowany byl html, …
oczywiscie mozna na wstepie w templacie formularza.
<% @comment.posted_at = Time.now -%>
ale, lepiej jest wszystko predefinioawne (niekoniecznie date powstania ale np. user_id) zainicj. w kontrolerze (lub w spec. metodzie typu new_with_defaults modelu) a pozniej przetrzymac w hidden field (akcja typu new) lub przy zapisaniu (create) opcjonalnie wykorzystac before_save/create/update callbacks.
Najlepiej trzymac sie konwencji i zamiast ‘posted_at’ kolumna ‘created_at’ wtedy nie trzeba nic robic i wyrzucic datetime_select z formularza
Jest juz metoda create (nie jak w C czy Perl funkcja, a wlasciwie message), kt. od razu wstawia rekord, mozna wiec nadpisac create biorac pod uwage wymagane defaulty i jej podstawowe dzialanie ale nie wykorzystac w akcji typu new ale create.