gpt4 book ai didi

activeadmin - 如何使用模块在事件管理员中拆分很长的代码?

转载 作者:行者123 更新时间:2023-12-04 20:12:05 29 4
gpt4 key购买 nike

Activeadmin 在单个文件上注册一个页面,其中包含所有逻辑:索引、显示、编辑等。

我想将 task.rb 拆分为 task_index.rb、task_show.rb、task_edit.rb 等。

那么,你应该怎么做呢?

注意 :我知道在每个文件中创建一个 ActiveAdmin.register block (如果 Task 存在,它会附加)将完成这项工作,但这个问题旨在提供一种通用方法,而不是解决这个特定的查询。

-- admin/task.rb
#encoding: utf-8

ActiveAdmin.register Task do
[Lot's of actions]
member_action....
member_action....
member_action....
batch_action....

[Index stuff]
filter....
scope....
scope....
scope....
index do
column...
column...
column...
column...
end

[Edit stuff]
form do |f|
f.input....
f.input....
f.input....
f.input....
f.input....
end
[etc etc etc]
end
----------------

我正在考虑模块,但我不知道如何去做。

最佳答案

我就是这样做的

模块来源

module ResourceDSL
module ActsAsClone

def acts_as_clone
controller do
def new
instance_variable_name = active_admin_config.resource_class.to_s.underscore
resource = active_admin_config.resource_class.find(params[:id]) rescue nil
attrs = resource.nil? ? {} : resource.attributes
resource = active_admin_config.resource_class.new(attrs)
instance_variable_set("@#{instance_variable_name}", resource)
end
end

action_item :only => [:show, :edit] do
if can? :create, resource and (!resource.respond_to?(:live?) or resource.live?)
link_to "Copy", :action => :new, :id => resource.id
end
end
end
end
end

包括到 ActiveAdmin::ResourceDSL
ActiveAdmin::ResourceDSL.send :include, ResourceDSL::ActsAsClone

然后你可以
ActiveAdmin.register Account do
menu :parent => "Billing", :priority => 10
acts_as_clone
end

关于activeadmin - 如何使用模块在事件管理员中拆分很长的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978928/

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