【问题标题】:how to check condition while exporting excel in rails with Axlsx gem如何在使用 Axlsx gem 在 Rails 中导出 excel 时检查条件
【发布时间】:2020-10-06 05:53:51
【问题描述】:

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

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

下载.xlsx.axlsx

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

【问题讨论】:

    标签: ruby-on-rails excel ruby-on-rails-5 axlsx


    【解决方案1】:

    您可以为任务对象编写一个实例方法,该方法将根据status 值返回所需的status string

    # 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
    

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

    【讨论】:

      【解决方案2】:

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

      # app/models/task.rb
      
      enum status: %i[not-completed completed not-started]
      

      这会将状态值 0 与未完成、1 与已完成、2 与未开始相关联。

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

      你还会有一些额外的方法,比如未完成?,完成?并没有开始?这将根据状态属性的值返回 true 或 false。

      更多详情请参考以下链接

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-30
        • 2020-01-03
        相关资源
        最近更新 更多