【问题标题】:String substitution within ruby arrayruby 数组中的字符串替换
【发布时间】:2015-09-08 18:04:08
【问题描述】:

我有以下代码,我想在其中将某些值更改为 csv 友好,例如,'nil' 到 ''。我需要知道如何进行这些更改。谢谢。

  def daily_door_schedule
    @tickets = Ticket.where(active: true).
      pluck(
        :door_manufacturer,
        :job_number, 
        :door_style, 
        :door_allocation_date,
        :date_doors_received_in_aub, 
        :door_delivery_due_date,
        :notes
      )

    respond_to do |format|
      format.html
      format.csv { render text: @tickets.to_csv }
    end
  end

【问题讨论】:

  • to_csv 可以处理 nil 值,它会导致一个空字段
  • 具体是什么问题? CSV 类不会创建包含单词“nil”的字符串。
  • Ruby 没有方法 wherepluck。如果它们没有在Ticket 中定义,则至少需要一个标签。

标签: ruby-on-rails arrays ruby string


【解决方案1】:

应该这样做:

@tickets = Ticket.where(active: true).
  pluck(
    :door_manufacturer,
    :job_number, 
    :door_style, 
    :door_allocation_date,
    :date_doors_received_in_aub, 
    :door_delivery_due_date,
    :notes
  ).map { |ticket| ticket.map(&:to_s) }

【讨论】:

  • 安东尼,当你不戴老花镜时会发生这种情况。我想你想要el ||= ''。如果el 是字符串或nil,你也可以写成ticket.map(&:to_s),但我猜你还是想要字符串。 (我这么说是不知道pluck 做了什么。)
  • 两周前我第一次去看了验光师……你的评论再合适不过了。一如既往,感谢您的建议 - 非常完美。
猜你喜欢
  • 2011-10-24
  • 2015-04-11
  • 1970-01-01
  • 2014-07-25
  • 2017-07-14
  • 2012-04-26
  • 2010-09-28
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多