【发布时间】:2019-07-18 21:24:52
【问题描述】:
我正在开发一项功能,根据我的日常工作时间以及我的合同的开始和结束日期在日历中显示我的工作时间。问题是当我在同一天有 2 个或更多班次时。假设朱利安从 2019 年 7 月 17 日到 2019 年 7 月 31 日每周一从 03:00 到 04:00 和同一天从 5:00 到 6:00 换班。这意味着我的日历应该显示这 2 次轮班在 7 月 22 日和 7 月 29 日。我已经编写了逻辑来让我得到正确的日期。截至目前,我的 JSON 响应看起来像这样
{"user":"Julian","start":"2019-07-22","day":"Monday","start_time":["03:00","05:00"], "end_time":["04:00","06:00"]},{"user_":"Julian","start":"2019-07-29","day":"Monday","start_time ":["03:00","05:00"],"end_time":["04:00","06:00"]}
这是由我的 JSON 构建器文件中的以下代码生成的
json.array! event.each do |inevent|
json.id hr_schedule.id
json.user_id hr_schedule.user_id
json.start inevent.strftime('%Y-%m-%d')
day_of_week = inevent.strftime('%A')
json.day day_of_week
if day_of_week == "Monday"
json.start_time hr_schedule.monday_st
json.end_time hr_schedule.monday_end
elsif day_of_week == "Tuesday"
json.start_time hr_schedule.tuesday_st
json.end_time hr_schedule.tuesday_end
elsif day_of_week == "Wednesday"
json.start_time hr_schedule.wednesday_st
json.end_time hr_schedule.wednesday_end
elsif day_of_week == "Thursday"
json.start_time hr_schedule.thursday_st
json.end_time hr_schedule.thursday_end
elsif day_of_week == "Friday"
json.start_time hr_schedule.friday_st
json.end_time hr_schedule.friday_end
elsif day_of_week == "Saturday"
json.start_time hr_schedule.saturday_st
json.end_time hr_schedule.saturday_end
elsif day_of_week == "Sunday"
json.start_time hr_schedule.sunday_st
json.end_time hr_schedule.sunday_end
end
end
我想要实现的是能够将我的所有事件作为一个唯一的 JSON 对象,如下所示
{"user":"Julian","start":"2019-07-22","day":"Monday","start_time":"03:00","end_time":"04:00 "},{"user":"Julian","start":"2019-07-22","day":"Monday","start_time":"05:00","end_time":"06:00 "}, {"user":"Julian","start":"2019-07-29","day":"Monday","start_time":"03:00","end_time":"04:00"}, {"user":"Julian","start":"2019-07-29","day":"Monday","start_time":"05:00","end_time":"06:00"}
【问题讨论】:
-
@SergioTulentsev 这是一个错字,我更新了描述,它应该是从 03:00 到 04:00 以及同一天从 5:00 到 6:00 的另一个转变跨度>
-
json是什么类?我不熟悉array!方法。 -
@muistooshort:我认为在这种情况下,do/end 块将绑定到
json.array!。 -
尽量不要使用英文单词作为你的逻辑的关键或驱动程序。数字或明确的机器可读代码几乎总是更好。如果某人将语言设置为英语以外的任何语言,这将无法在某人的计算机上运行,并且并非每个开发人员都会将英语设置为默认设置。
-
你设置了
json.user_id hr_schedule.user_id,但你得到了"user":"Julian"和"user_":"Julian"(注意下划线)。user和user_是如何设置的?id在哪里?你确定这是生成 JSON 的代码吗?
标签: ruby-on-rails json ruby ruby-on-rails-5