使用' activeadmin-axlsx'添加自定义列宝石

时间:2014-12-11 15:00:35

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

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

这是我到现在为止所尝试的

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

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

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

我还尝试了下面的代码段,引用了Github link for activeadmin-axlsx

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

这在Excel中提供了一个空白列

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

非常感谢!

2 个答案:

答案 0 :(得分:1)

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

对于上面的例子,

end_date不是表中的属性,因此在模型中说Employee,添加此

class Employee < ActiveRecord::Base

attr_acessor :end_date

end

这里我修改end_time,它是datetime类型数据库中的一个属性,只获取列名为结束日期

的日期

在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

这将为您提供所需的价值。

答案 1 :(得分:0)

我认为你可以定义一个像start_date。你试过了吗?

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