2016-05-21 23 views
8

Ich habe Code wie folgt aus:Schienen ActiveAdmin. Wie setze ich den Standardwert?

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 

Ich möchte das Feld :published_at (das ist t.datetime) auf das aktuelle Datum und die Uhrzeit standardmäßig eingestellt werden. Mein Beispiel funktioniert nicht. Wie kann ich das erreichen?

Antwort

17

Yep. Ich habe die Antwort selbst gefunden.

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

Es ist anzumerken, dass das Formular zum Bearbeiten vorhandener Datensätze sowie zum Erstellen neuer Datensätze verwendet wird. Daher ist es besser, bedingte Zuweisung zu verwenden, um zu vermeiden, dass der vorhandene Wert von published_at versehentlich überschrieben wird. 'f.object.published_at || = DateTime.now' – omnikron

+0

' f.object.published_at = DateTime.now wenn f.object.persistiert? 'erfüllt den Standardwert nur für neues Objekt. Es wird keinen leeren Wert für ein vorhandenes Objekt überschreiben. –

4

Sie können mit so etwas wie dies versuchen:

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

es funktioniert nicht. Und gleichzeitig wirft es keine Fehler. Aber warum hast du die Erb-Syntax benutzt? Dies ist die 'post.rb' Datei im' app \ admin' Ordner. Und deine Variante wirft natürlich einen Fehler auf. Also habe ich es so ausprobiert: 'f.input: publiced_at, input_html: {value:" # {DateTime.now} "}'. Auch "Time" in "DateTime" geändert. Und so: 'f.input: published_at, input_html: {value: DateTime.now}' –

+0

ich habe die Antwort gefunden. Siehe meinen Kommentar. –

Verwandte Themen