2016-05-21 19 views
8

私はこのようなコードを持っている:Rails ActiveAdmin。デフォルト値を設定するには?

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 

私は(t.datetimeある)フィールド:published_atは、デフォルトで現在の日付と時刻に設定することにしたいです。私の例はうまくいきません。どうすればこれを達成できますか?

答えて

17

うん。自分自身で答えを見つけました。

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

フォームは既存のレコードの編集や新しいレコードの作成に使用されるので、 'published_at'の既存の値を誤って上書きしないように条件付き代入を使用することが望ましいです。 'f.object.published_at || = DateTime.now' – omnikron

+0

' f.object.published_at = DateTime.now(f.object.persistedが指定されていない場合)? 'は新しいオブジェクトに対してのみデフォルト値を返します。既存のオブジェクトの空の値を上書きしません。 –

4

あなたはこのような何かを試すことができます。

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

動作しません。そして同時に、それはどんな誤りも投げません。しかし、なぜあなたはerb構文を使いましたか?これは 'app \ admin'フォルダ内の' post.rb'ファイルです。そしてあなたの亜種はもちろん誤りを投げます。だから私はこのようにしようとしました: 'f.input:published_at、input_html:{value:"#{DateTime.now} "}'。 'Time'を' DateTime'に変更しました。そして、次のように: 'f.input:published_at、input_html:{value:DateTime.now}' –

+0

私は答えを見つけました。私のコメントを参照してください。 –

関連する問題