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.
假设我需要不同类型的 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.