ruby-on-rails-5 - 如何在 ActiveAdmin 中使用日期选择器而不重写创建表单?
问题描述
我的 ActiveAdmin 模型创建表单(即/admin/<model>/new
)使用一组尴尬的日期和日期时间下拉列表。
我想改用选择器。但是我发现的所有关于使用日期时间选择器的文档似乎都需要重写整个表单。似乎没有办法只更改一个输入,也没有等效的preserve_default_filters!
.
我想更改所有日期和日期时间列的默认值,例如...
config.datepicker = ...
或每列,如...
column :signed_up, as: :datetime_picker
编辑
默认情况下,我会得到与此等效的新表单和编辑表单。
form do |f|
f.semantic_errors
f.inputs
f.actions
end
如果我想更改signed_up
为使用日期选择器,我必须重复默认提供的所有列,只是为了更改一列的输入类型。
ActiveAdmin.register Thing do
form do |f|
t.semantic_errors
t.input :name
t.input :this
t.input :that
t.input :signed_up, as: :datepicker
t.input :other
t.input :thing
t.input :left
t.input :right
t.actions
end
end
这是很多不必要的重复,而且格式不正确。我正在寻找一种方法来更改一列或一种类型的输入表示,而不必每次都手动编写整个表单。
解决方案
我设法对 Active Admin 行为进行修补,以使用:datepicker
而不是:date_select
.
在您的config/application.rb
中,添加以下补丁
Bundler.require(*Rails.groups)
// Start patch
module ActiveAdminFormBuilderPatch
def default_input_type(*_args, **_kwargs)
ret = super
ret == :date_select ? :datepicker : ret
end
end
ActiveAdmin::FormBuilder.include ActiveAdminFormBuilderPatch
// end patch
module YourApp
class Application < Rails::Application
// configs
end
end
笔记
确认这适用于 activeadmin 版本2.9.0
。