如何使用 Axlsx gem 在 rails 中导出 excel 时检查条件

how to check condition while exporting excel in rails with Axlsx gem

project有很多tasktask 具有整数字段 0,1 和 2 的属性 status 现在我想为 0 打印 not-completed,为 1 打印 completed,为 2 打印 not-started

目前我可以打印整数来代替文本。我试过 if condition 但语法错误

download.xlsx.axlsx

@project.tasks.each do |task|
  sheet.add_row [task.task_name, task.planned_end_date, task.status]
end

您可以为任务对象编写一个实例方法,它将 return 需要 status string 取决于 status 值。

# app/models/task.rb
    
def display_status
  case status
  when 0
    "not-completed"
  when 1
    "completed"
  when 2
    "not-started"
  else
    ""
  end
end

然后在您的 .xlsx 视图模板中使用此方法。

# download.xlsx.axlsx

@project.tasks.each do |task|
  sheet.add_row [task.task_name, task.planned_end_date, task.display_status]
end

希望这对您有用。谢谢:-)

您可以在任务模型中使用枚举作为状态属性

# app/models/task.rb

enum status: %i[not-completed completed not-started]

这会将状态值 0 关联到 not-completed,1 关联到已完成,2 关联到 not-started。

现在,如果您访问 task.status,它将仅输出字符串值。如果您需要整数值,则必须使用 Task.statuses['completed'].

你还会有一些额外的方法,比如not-completed?,完成了吗? not-started?这将 return 真或假取决于状态属性的值。

请参考以下链接了解更多详情

https://api.rubyonrails.org/v5.2.3/classes/ActiveRecord/Enum.html https://naturaily.com/blog/ruby-on-rails-enum