使用 ActiveAdmin 重构公共代码

Refactoring Common Code with ActiveAdmin

我有一个使用 ActiveAdmin 的工作部分,我在其中考虑重构,因此没有那么多重复(:street, :street2, :city, :state, :zip_code),但不一定如何去做或是否会被推荐。这是我所拥有的示例:

  show do
    attributes_table do
      row :street
      row :street2
      row :city
      row :state
      row :zip_code
    end
  end

  form do |f|
    f.inputs 'Location' do
      f.input :street
      f.input :street2
      f.input :city
      f.input :state
      f.input :zip_code
    end
    f.actions
  end

  permit_params :email, :street, :street2, :city,
                :state, :zip_code

此代码运行良好,此示例比我目前在生产中使用的代码更短。关于如何组合我的常用参数而不是重复太多的任何想法?

由于 showform 操作具有不同的职责,因此您实际上并没有那么多重复。我想您可以定义一个数组并动态填充这些字段:

def address_params
  %i(email street street2 city state zip_code)
end

show do
   attributes_table do
      location_params.each do |params|
        row param
      end
   end
end

form do |f|
  f.inputs 'Location' do
    location_params.each do |params|
      f.input param
    end
  end
end

permit_params location_params

不过我不推荐这种方法。这比它的价值更麻烦,您可能希望将在 show 中显示的参数与允许在表单中更新的参数分离。在我看来,您的代码没有问题。