2017-05-08 33 views
0

計數假期我試圖讓度假的請求的應用程序,但我面臨的一個疑難問題都要求VacationRequest和它的結果將顯示VacationRequest的視圖E型排除。如何從rails4

VacationRequest.rb模型

def skip_holidays 
    count1 = 0 
    special_days = Date.parse("2017-05-09", "2017-05-12") 

    special_days.each do |sd| 
    if ((start_data..end_data) === sd) 
     numero = (end_data - start_data).to_i 
     numro1 = numero - sd 
    else 
     numero = (end_data - start_data).to_i 
    end 
    end 
end 

VacationRequest show.htm.erb

在這裏,我呼籲從模型

@vacation_request.skip_holidays 

的方法,這是顯示錯誤,無法正常工作。請幫助我!

+0

加入確切的錯誤消息的問題 – user000001

+0

循環。每個不考慮所有的數組,但只有array.I的第一要素認爲這是suposed要經過各構件端對它們進行比較。 –

+0

這是拋出一個錯誤: –

回答

0

我的這種做法是以下幾點:

def skip_holidays 
    special_days = ["2017-05-09", "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 
end 

這樣你遍歷所有要求的日期(範圍),檢查日期是否是一個特殊的日子 - 如果是這樣,拒絕它,否則接受。最後,您可以顯示有關已接受日期和已拒絕日期的統計信息。

+0

Philipp很享受你真的幫了我很多,但我還有一個問題。這條線做了什麼:.map(&:to_date),因爲它跳過了從2017-05-09到2017-05-12的日期範圍不僅這兩天。 –

+0

在另一條評論中,你表示你只希望提供的兩個日期不被計算在內。代碼行取每個日期,在它們上運行'to_date'方法並將結果作爲數組返回。 –

+0

非常感謝菲利普,你真的幫助了我。我想知道這條線是做什麼的:special_days = [「2017-05-09」,「2017-05-12」]。地圖(&:to_date),因爲並不僅僅是這兩個日期,而是從2017-05-09到2017-05-12的範圍。 –

0

您不能通過將多個參數傳遞給構造函數來創建日期範圍。相反,調用構造函數兩次,以創建一個範圍:

special_days = Date.parse("2017-05-09") .. Date.parse("2017-05-12") 

或者相反,如果你只想要兩個日期,這樣做:

special_days = ["2017-05-09", "2017-05-12"].map &:to_date 
+0

我希望這兩個日期不被計算,所以我想把它們放在一個數組中,然後檢查這些日子是否是用戶選擇並排除它們的日子之一,但我不知道該怎麼辦這個。 –

+0

這是vacation_request控制器的形式,用戶從中選擇start_date和end_date: –

0

Date.parse("2017-05-09", "2017-05-12")不`噸創建範圍,只返回第一個PARAMS解析:

#irb 
Date.parse("2017-05-09", "2017-05-12") 
=> Tue, 09 May 2017 

你可以這樣來做:

initial = Date.parse("2017-05-09") 
final = Date.parse("2017-05-12") 

((initial)..final).each do |date| 
    #rules here. 
end 
+0

非常感謝您按照您的建議我做的,但仍然只顯示第一個日期。 –

+0

你能告訴我如何在一個數組中添加假期,然後在聘請一個假期請求時從計數中排除,因爲我正在嘗試這麼做! –