2

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

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

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

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

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

我也尝试了下面的代码片段,指的是 activeadmin-axlsx 的 Github 链接

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

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

任何人都可以帮助我实现这一目标吗?或者建议任何其他可以与activeadmin gem 一起使用的 gem

非常感谢!

4

2 回答 2

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

这将为您提供所需的值。

于 2015-01-15T09:35:24.727 回答
0

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

column(:end_date) do |resource|
  resource.end_time.strftime('%Y-%m-%d')
end
于 2014-12-18T08:25:24.663 回答