简体   繁体   English

如何迭代 rails activeadmin CSV 中的数组?

[英]How to iterate over an array in rails activeadmin CSV?

I was trying to create a custom CSV in active admin for Saloon model and I have one column with an array of OperationalHours.我试图在活动管理中为 Saloon 模型创建一个自定义 CSV,我有一列包含一系列 OperationalHours。

Here is my Object:这是我的对象:

[20] pry(main)> Saloon.first
=> #<Saloon:0x00007fa773496cf0
 id: 1,
 address_1: "1313 2nd St South",
 city: "Battlefield",
 state: "Missouri",
 zip: "63303",
 operational_hours:
  [#<OperationalHours:0x00007fa77aa72848 @closing_time="5:00 PM", @notes="", @opening_time="9:00 AM">,
   #<OperationalHours:0x00007fa77aa725f0 @closing_time="5:00 PM", @notes="", @opening_time="9:00 AM">,
   #<OperationalHours:0x00007fa77aa723c0 @closing_time="5:00 PM", @notes="", @opening_time="9:00 AM">,
   #<OperationalHours:0x00007fa77aa72190 @closing_time="Closed", @notes="", @opening_time="Closed">,
   #<OperationalHours:0x00007fa77aa71f10 @closing_time="Closed", @notes="", @opening_time="Closed">,
   #<OperationalHours:0x00007fa77aa71ce0 @closing_time="Closed", @notes="", @opening_time="Closed">,
   #<OperationalHours:0x00007fa77aa71ab0 @closing_time="Closed", @notes="", @opening_time="Closed">],
 name: "Clear Cut",
 trial_period: 30,
 time_zone: "Central Time (US & Canada)">

And in my active admin file I have:在我的活动管理文件中,我有:

ActiveAdmin.register Saloon do
  csv do 
    column :name 
    column "Operation Hours" do |sal|
     sal.operational_hours.each do |hour|
      "#{hour.opening_time}-#{hour.closing_time}"
     end
    end
  end
end

But operational hours on CVS has:但是 CVS 的营业时间有:

[#<OperationalHours:0x00007fcf295e2a90 @opening_time="9:00 AM", @closing_time="5:00 PM", @notes="">,
 #<OperationalHours:0x00007fcf295e2798 @opening_time="9:00 AM", @closing_time="5:00 PM", @notes="">,
 #<OperationalHours:0x00007fcf295e2428 @opening_time="9:00 AM", @closing_time="5:00 PM", @notes="">,
 #<OperationalHours:0x00007fcf295e2158 @opening_time="9:00 AM", @closing_time="5:00 PM", @notes="">,
 #<OperationalHours:0x00007fcf295e1eb0 @opening_time="9:00 AM", @closing_time="5:00 PM", @notes="">,
 #<OperationalHours:0x00007fcf295e1910 @opening_time="9:00 AM", @closing_time="5:00 PM", @notes="">,
 #<OperationalHours:0x00007fcf295e1690 @opening_time="9:00 AM", @closing_time="5:00 PM", @notes="">]

Is there a way to iterate over operational hours and show each as "9:00 AM-5:00 PM"format?有没有办法迭代运行时间并将每个时间显示为“9:00 AM-5:00 PM”格式?

I was thinking wrong all along.我一直都在想错。 For solution, I made a method on the Saloon model to send formatted operational hours.为了解决这个问题,我在 Saloon 模型上做了一个方法来发送格式化的营业时间。

  def sanitized_operational_hours
    hours = ""
    self.operational_hours.each_with_index do |v, i|
      if i==6
        hours += "#{Date::DAYNAMES[0]} #{v.opening_time} - #{v.closing_time} "
      else 
        hours += "#{Date::DAYNAMES[i+1]} #{v.opening_time} - #{v.closing_time} "
      end
    end
    hours
  end

And on my active admin I called this method在我的活跃管理员上,我调用了这个方法

  column "Operational Hours" do |t|
      t.sanitized_operational_hours
  end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM