gpt4 book ai didi

ruby-on-rails - Active Admin 使用预设集合批量编辑产品

转载 作者:行者123 更新时间:2023-12-04 06:11:54 24 4
gpt4 key购买 nike

有没有办法通过预设集合向 Active Admin 添加批量编辑?我的产品模型包含一个 category 字段。

我的 ActiveAdmin 的表单如下所示:

f.input :category,as: :radio, collection:['cat1', 'cat2', 'cat3']

所以我可以在集合中选择一个类别。我想添加批量编辑,这样我就可以检查许多字段,然后为它们分配上一个集合中的类别。

我的第一个想法是添加许多批处理操作(一个用于 cat1,一个用于 cat2,一个用于 cat3,等等。但是,批处理操作菜单将包含超过 10 个元素...

一定有更好的方法来做到这一点,是吗?

最佳答案

您可以使用自己的操作呈现自定义 View 并从那里发布对类别的更改。像这样的:

admin/product.rb

batch_action :set_category do |selection|
if (@products = Product.where(id: selection)).blank?
redirect_to :back, flash: {error: "No products were selected!"}
else
render template: 'products/edit_group_category' #, layout: 'some_custom_layout' - I had some problems trying to use active_admin layout here, but custom one works fine (you may need it for styling)
end
end

views/products/edit_group_category.html.haml

=form_for :group_category, url: :update_group_category do |f|
-@products.each do |product|
=f.hidden_field :products, :multiple => true, :value => product.id

=f.input :category, as: :radio, collection:['cat1', 'cat2', 'cat3']

=f.submit 'Submit'

controllers/products_controller.rb

def update_group_category
products = Product.where(params[:group_category][:products])

#set here category with name params[:group_category][:category] to all of products

redirect_to '/admin/products', notice: 'Category set' #you may have another redirect path
end

routes.rb

post 'update_group_category' => 'products#update_group_category'

您可以尝试将该 update_group_category 操作放在 admin/product.rb 中的 controller block 中,但我认为将其保留在普通 Controller 中更好。


另一种可能对用户更友好的方式是使用 js 和 ajax - 您可以使用

拦截批处理操作提交事件
$("#collection_selection").submit ->
if $("#batch_action").val() == "set_category"
dialog_url = '/products/edit_group_category?'+ $(this).serialize();
openDialog dialog_url
false

其中 openDialog 是一些函数,它应该通过 AJAX 从 dialog_url 加载所需的表单并将其显示在对话框中(如 jQuery UI dialog )。在 Controller 操作 edit_group_category 中,您可以使用 Product.where(id: params[:collection_selection])

访问选定的产品

由于在这种方法中从不运行批处理操作 block ,您可以在 admin/product.rb

中仅保留 batch_action :set_category

关于ruby-on-rails - Active Admin 使用预设集合批量编辑产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com