【问题标题】:Adding custom column using 'activeadmin-axlsx' gem使用“activeadmin-axlsx”gem 添加自定义列
【发布时间】:2014-12-11 15:00:35
【问题描述】:

我在使用 Rails 4 的应用程序中使用 activeadmin gem。我需要使用 activeadmin-axlsx gem 下载 excel。 我能够将我的数据库中存在的所有列作为 Excel 工作表中特定模型的列。但是,我想要的是添加一个我的数据库中不存在的列。

这是我到目前为止尝试过的

 column('start_date') do |date|
   date.start_date
 end

这里 start_date 是我的数据库中的一个属性,因此我在 excel 中得到了该列。

现在,当我尝试添加另一列结束日期(它不是数据库中的属性)时,我得到一个空白列。

我也试过下面的sn-p,指的是Github link for activeadmin-axlsx

config.xlsx_builder.column('end_date') do |emp|
  emp.end_time.strftime("%Y-%m-%d")
end

这会在 excel 中给出一个空白列

谁能帮我实现这个目标?或者建议任何其他可以与 activeadmin gem 一起使用的 gem?

非常感谢!

【问题讨论】:

    标签: ruby-on-rails-4 activeadmin axlsx


    【解决方案1】:

    解决方案是将数据库中不存在的属性添加为相应模型中的属性访问器。

    对于上面的例子,

    end_date 不是表中的属性,所以在模型中说Employee,添加这个

    class Employee < ActiveRecord::Base
    
    attr_acessor :end_date
    
    end
    

    在这里,我正在修改 end_time,它是 datetime 类型的数据库中的一个属性,以仅获取列名为 End Date

    的日期

    在 app/admin/employee.rb 中

    ActiveAdmin.register User do 
    
      xlsx do 
        column('end_date') do |emp|
          emp.end_time.strftime("%Y-%m-%d")
        end
      end
    end
    

    这会给你想要的价值。

    【讨论】:

      【解决方案2】:

      我认为你可以定义一个像 start_date 这样的。你试过了吗:

      column(:end_date) do |resource|
        resource.end_time.strftime('%Y-%m-%d')
      end
      

      【讨论】:

      • 是的@baxang 我做到了,因为 end_date 不是数据库中的现有属性,它给了我一个空白列。所以出路是你在模型中将 end_date 定义为 attribute_accessor。这对我有用:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多