2016-05-21 16 views
8

mam kod jak poniżej:Rails ActiveAdmin. Jak ustawić domyślną wartość?

ActiveAdmin.register Post do 

form do |f| 
    f.inputs "Post Details" do 
    f.input :title 
    f.input :body 
    f.input :published_at, :as => DateTime.now 
    end 
    f.actions 
end 

Chcę pole :published_at (co jest t.datetime) należy ustawić bieżącą datę i czas domyślnie. Mój przykład nie działa. Jak mogę to osiągnąć?

Odpowiedz

17

Yep. Znalazłem odpowiedź sam.

ActiveAdmin.register Post do 

form do |f| 
    f.object.published_at = DateTime.now 
    f.inputs "Post Details" do 
    f.input :title 
    f.input :body 
    f.input :published_at 
    ... 
    end 
end 
+3

Warto zauważyć, że formularz służy do edycji istniejących rekordów oraz tworzenia nowych, dlatego lepiej jest użyć warunkowego przypisania, aby uniknąć przypadkowego nadpisania istniejącej wartości 'published_at' - tj. 'f.object.published_at || = DateTime.now' – omnikron

+0

' f.object.published_at = DateTime.now, chyba że f.object.persisted? 'assings wartość domyślna tylko dla nowego obiektu. Nie zastąpi pustej wartości istniejącego obiektu. –

4

Można spróbować z czymś takim:

<%= f.input :published_at, input_html: {value: "#{Time.now}"} %> 
+0

to nie działa. A jednocześnie nie rzuca żadnych błędów. Ale dlaczego używałeś składni erb? To jest plik 'post.rb' w folderze' app \ admin'. A wasz wariant oczywiście zgłasza błąd. Tak więc wypróbowałem to tak: 'f.input: published_at, input_html: {value:" # {DateTime.now} "}'. Zmieniono również 'Time' na' DateTime'. I tak: 'f.input: published_at, input_html: {value: DateTime.now}' –

+0

znalazłem odpowiedź. Zobacz mój komentarz. –

Powiązane problemy