2012-05-22 29 views
0

我有一個句點模型,其中包含start_date和end_date。它屬於主題模型。在表單中使用date_select並且想要rejecct_if日期爲空

在我的主題表單中,我也想管理期間。所以我首先在這段時間裏爲兩個日期使用了兩個文本字段。我也有一個reject_if end_date是零。

accepts_nested_attributes_for :period, 
    reject_if: lambda { |p| p[:end_date].blank? } 

它的工作原理。幾個月後,我將表單改爲使用date_select,它顯示一些用於輸入日期的選擇語句。

當我這樣做,我發現每一個選擇都會是這樣的:

<select name="topic[period_attributes][end_date(1i)]" id="topic_period_attributes_end_date_1i"> 

通知的1i,這意味着我的reject_if不再工作,因爲任何事情都會被拒絕。我需要改變:

accepts_nested_attributes_for :period, 
    reject_if: lambda { |p| p[:'end_date(1i)']].blank? } 

這將工作,但它不像以前一樣(只檢查一個日期的年份似乎容易出錯)。

當我使用date_select時,有沒有正確的方法來拒絕?

回答

0

您可以添加檢查:end_date屬性的所有部分一類的輔助方法:

def self.date_populated?(params) 
    ['1i', '2i', '3i'].select{|date_part| 
    params[:"end_date(#{date_part})"].blank? 
    }.blank? 
end 

,並檢查幫手:

reject_if: lambda { |p| !date_populated?(p) } 
相關問題