【问题标题】:ActiveAdmin: model with more than 1 new & edit form pages and collection actions for each oneActiveAdmin:模型具有超过 1 个新的和编辑表单页面以及每个页面的收集操作
【发布时间】:2018-06-04 21:14:14
【问题描述】:

假设我需要不同类型的帖子创建/编辑页面,每个页面都优化了不同类型的帖子,将显示一些属性来编辑它们并隐藏其他。我想在顶部选择 2 或 3 个收集操作 [“创建 XX 帖子”、“创建 YY 帖子”等]。我怎样才能做到这一点?

【问题讨论】:

    标签: ruby-on-rails forms activeadmin


    【解决方案1】:

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

    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 会像往常一样在您的应用程序/视图/帖子中查找 _xx_form 部分。这涉及到更高级的 ActiveAdmin 自定义,因此请确保您想要这样做,而不仅仅是普通的 Rails。

    【讨论】:

    • 这可能会奏效。谢谢!如果#create 失败,还要在permit_params 中添加一些条件并设置type,以防万一。
    【解决方案2】:

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

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

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

    【讨论】:

    • 是的,谢谢。我知道这种解决方法,但我想将所有逻辑保留在同一个 ActiveAdmin 注册类中。
    猜你喜欢
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多