Ruby on rails 如何排除仅计算我在数组中写入的日期而不是所有范围的日期?

Ruby on rails 如何排除仅计算我在数组中写入的日期而不是所有范围的日期?,ruby-on-rails,Ruby On Rails,我试图从请求的天数范围中减去特殊天数 特殊的_日是在一个数组中设置的,我想排除只计算我放在那里的日期,而不是作为一个范围的洞,就像它正在工作一样 def skip_holidays special_days = ["2017-05-10", "2017-05-12"].map(&:to_date) accepted_days = [] refused_days = [] (start_data..end_data).each do |requested_date|

我试图从请求的天数范围中减去特殊天数

特殊的_日是在一个数组中设置的,我想排除只计算我放在那里的日期,而不是作为一个范围的洞,就像它正在工作一样

def skip_holidays
  special_days = ["2017-05-10", "2017-05-12"].map(&:to_date)
  accepted_days = []
  refused_days = []
  (start_data..end_data).each do |requested_date|
    accepted_days << requested_date unless special_days.include?(requested_date)
    refused_days << requested_date if special_days.include?(requested_date)
  end
  accepted_day_count = accepted_days.count
  refused_days_count = refused_days.count

  rez= accepted_day_count- refused_days_count
  return rez
end
def skip_假日
特殊日=[“2017-05-10”,“2017-05-12”]地图(&:截止日期)
接受天数=[]
拒绝天数=[]
(开始数据..结束数据)。每个do请求的日期|

请允许我将其分解为更一般的方法,因为您并没有真正提供任何代码供我们使用

假设您有一个名为
special_days
的日期数组,其中包括应该阻止的日期

special_days = ["2017-05-12","2017-05-18"]
让我们进一步假设您有一系列用户希望休假的日期

vacation_days = ["2017-05-12","2017-05-18", "2017-05-19"]
最后,您希望返回一个日期数组,这些日期在
休假日
中,但不在
特殊日
中。 要实现这一点,您可以简单地减去数组,如下所示:

vacation_days - special_days
# => ["2017-05-19"]

我希望这有帮助。

return sd
中删除
return
,只留下
sd
。您想实现什么?它
return
s所以这只是一个例子很多,这就是我试图计算我们国家的假日天数而不计算的整个方法。def largo_festat count1=0特殊天数=[“2017-05-12”,“2017-05-18”]特殊天数。每个都做sd |如果((开始数据..结束数据)==sd)count1=count1+1 numeroji=sd.count返回numeroji numero=(结束数据-开始数据)。to_i numro1=numero-count1返回numro1 count1=count1+1否则numero=(结束数据-开始数据)。to_i返回numero end end end def largo节日count1=0个特殊天数=[“2017-05-12”,“2017-05-18”]特殊天数。每个do | sd | if((开始数据..结束数据)==sd)count1=count1+1 numeroji=sd.count返回numeroji numero=(结束数据-开始数据)。to | i numro1=numero-count1返回numro1 count1=count1+1否则numero=(结束数据-开始数据).to\我返回numero end end endPhilipp非常感谢,但是c\休假日来自一个表单,用户可以从日历中选择他或她想要的日期。我有开始日期和结束日期。我不知道是否可以像你告诉我的那样将它们放入数组中?这是你的数据,你可以以任何形式将其呈现;)如果没有更多/适当的代码示例,我们将无法帮助您。只需添加一个示例,说明您收到的数据是什么样子的,并给出您已经编写的代码,这样我们就可以找到让您获得所需解决方案的最佳方法;)请将其添加到您的问题中,而不是添加到评论中

这是假期控制器的形式,用户从中选择star_数据和end_数据def largo_festat count1=0特殊天数=[“2017-05-12”,“2017-05-18”]特殊天数。每个do | sd | arr1=(开始数据..结束数据)arr2=arr1[]rez=arr2-special_days return rez end end这是我到目前为止所做的。请编辑您的问题并添加格式化的代码。