gpt4 book ai didi

ruby-on-rails - Rails Active Admin - 创建环绕 column() 的辅助函数

转载 作者:行者123 更新时间:2023-12-05 02:27:57 27 4
gpt4 key购买 nike

  index as: :reorderable_table do
column :position
column :full_name
column 'Category', &:category_name
column :avatar do |fm|
attachment_img(fm.avatar)
end
column :banner do |fm|
attachment_img(fm.banner)
end
column :description do |fm|
fm.description.try(:truncate, 100)
end
column :short_profile do |fm|
fm.short_profile.try(:truncate, 100)
end
actions
end

引用上面的代码,即使使用了一些自定义的辅助方法,我仍然发现自己不得不多次重复 column do apply_logic end

我如何编写围绕“列”函数的辅助方法,以便我的输出可以变成如下所示:

  index as: :reorderable_table do
column :position
column :full_name
rename_column :category_name, 'Category'
img_column :avatar
img_column :banner
truncate_column :description
truncate_column :short_profile
actions
end

最佳答案

您可以在 ActiveAdmin 中分解 IndexTableFor 类,方法是将以下内容放入初始化程序中。我把它放在 config/initializers/active_admin_monkey_patches.rb

module ActiveAdmin
module Views
class IndexAsTable < ActiveAdmin::Component
class IndexTableFor < ::ActiveAdmin::Views::TableFor
def rename_column str, attr
column(str) do |obj|
obj.send(attr)
end
end
def img_column attr
column(attr) do |obj|
attachment_img(obj.send(attr))
end
end
def truncate_column attr, length
column(attr) do |obj|
obj.send(attr).try(:truncate, length)
end
end
end
end
end
end

进行更改时重新启动 Rails 服务器,因为它是初始化代码。也许阅读 gem 源代码,在我的例子中它位于

~/.rvm/gems/ruby-3.1.2@chirails/gems/activeadmin-2.13.1/lib/active_admin/views/index_as_table.rb

我通过运行找到了位置

捆绑信息 activeadmin

关于ruby-on-rails - Rails Active Admin - 创建环绕 column() 的辅助函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72798864/

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