使用 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
此代码运行良好,此示例比我目前在生产中使用的代码更短。关于如何组合我的常用参数而不是重复太多的任何想法?
由于 show
和 form
操作具有不同的职责,因此您实际上并没有那么多重复。我想您可以定义一个数组并动态填充这些字段:
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
中显示的参数与允许在表单中更新的参数分离。在我看来,您的代码没有问题。
我有一个使用 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
此代码运行良好,此示例比我目前在生产中使用的代码更短。关于如何组合我的常用参数而不是重复太多的任何想法?
由于 show
和 form
操作具有不同的职责,因此您实际上并没有那么多重复。我想您可以定义一个数组并动态填充这些字段:
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
中显示的参数与允许在表单中更新的参数分离。在我看来,您的代码没有问题。