【问题标题】:Rails ActiveAdmin. How to set default value?Rails ActiveAdmin。如何设置默认值?
【发布时间】:2016-05-21 18:11:18
【问题描述】:

我有这样的代码:

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)默认设置为当前日期和时间。我的例子不起作用。我怎样才能做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby forms rubygems activeadmin


    【解决方案1】:

    是的。自己找到了答案。

    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
    

    【讨论】:

    • 值得注意的是,该表单用于编辑现有记录以及创建新记录,因此最好使用条件赋值以避免意外覆盖published_at的现有值——即。 f.object.published_at ||= DateTime.now
    • f.object.published_at = DateTime.now unless f.object.persisted? 只为新对象设置默认值。它不会覆盖现有对象的空值。
    【解决方案2】:

    你可以试试这样的:

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

    【讨论】:

    • 它不起作用。同时它不会抛出任何错误。但是你为什么使用 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}
    • 我找到了答案。请参阅我的评论。
    猜你喜欢
    • 1970-01-01
    • 2015-05-14
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多