【问题标题】:Add `if` condition to ActiveAdmin batch_batch destroy action but use default action behavior otherwise将 `if` 条件添加到 ActiveAdmin batch_batch 销毁操作,否则使用默认操作行为
【发布时间】:2021-10-04 16:25:14
【问题描述】:

我正在尝试添加默认 ActiveAdmin :destroy 批处理操作的条件显示,以便该选项仅根据用户角色显示。问题在于将if 属性添加到batch_action 方法调用似乎禁用了默认行为,而是依赖于块。例如:

batch_action :destroy, if: proc { authorization_logic_here }

根据用户角色正确显示/隐藏批处理操作,但如果显示该操作,它不会执行任何操作。我可以提供一个块,其中包含如何处理销毁请求的说明,但我宁愿不必在每次需要这样做时都重新发明轮子。有没有办法告诉batch_action 调用有条件地显示,但对:destroy 操作使用默认行为?

【问题讨论】:

    标签: ruby-on-rails ruby activeadmin


    【解决方案1】:

    我认为这是不可能的。您将不得不自己实施销毁。这是一个例子:

    batch_action :destroy, confirm: 'Beware', if: proc { true } do |ids|
      q = resource_class.where(id: ids).map(&:destroy)
      redirect_to collection_path, notice: "#{q.count} destroyed"
    end
    

    【讨论】:

      猜你喜欢
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多