2016-05-21 139 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 

我想现场:published_at(这是t.datetime)设置为当前日期和时间默认情况下。我的例子不起作用。我怎样才能做到这一点?

回答

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

我找到了答案。看到我的评论。 –