ActiveAdmin:具有超过 1 个新的和编辑表单页面以及每个页面的收集操作的模型

ActiveAdmin: model with more than 1 new & edit form pages and collection actions for each one

假设我需要不同类型的 create/edit 页面用于 Post,每个页面都优化了不同类型的 Post,将显示一些属性以编辑它们并隐藏其他属性。我想要从顶部 ["create XX post"、"create YY post" 等] 中选择 2 或 3 个收集操作。我怎样才能做到这一点?

您可以多次注册一个ActiveRecord模型with different names,例如

ActiveAdmin.register Post, as: "XxPost" do ... end
ActiveAdmin.register Post, as: "YyPost" do ... end

交替使用 STI 对 ActiveRecord 模型进行子类化并注册子类。

如果您想对单个资源使用不同的形式,那么可能是这样的:

action_item :new_xx_post do
  params = { post: { type: 'XX' } }
  link_to 'New XX Post', new_post_path(params)
end

controller do
  def new
    build_resource
    render resource.type == 'XX' ? 'xx_form' : 'yy_form'
  end
end

Rails 将照常在您的 app/views/posts 中查找 _xx_form 部分。这将进入更高级的 ActiveAdmin 自定义,因此请确保您要执行此操作而不仅仅是香草 Rails.