2015-05-19 119 views
2

設置默認值用於搜索字段在控制器導軌

def self.search_one(dyear) 
    where("YEAR(needby) = #{dyear}").group("DATE_FORMAT(needby, '%m/%Y')").count(:needby) 
    end 

因此,如果您在表單搜索框和初始頁面加載中輸入一年,一切正常。它在初始頁面加載時提升當前年份,併爲任何其他年份提供適當的錯誤(我只有系統中的2015年數據,因此預計其他年份不會填充)。但是,如果您在搜索字段中按Enter鍵而不輸入一年,它將傳遞一個空值而不是將其設置爲Time.now.year.to_s。

有關爲什麼它將空值傳遞給模型而不是當前年的任何想法?

回答

3

params[:dyear]的價值可能是'',其中,在有條件的,基本上是這樣的:

string = ''  
if string 
    puts "true?" 
else 
    puts "false" 
end 
#=> "true?" 

所以,你應該用params[:dyear].present?,或:

year = params[:dyear] 
year = Time.now.year.to_s unless year.present? 
+0

是的,這確實起作用。當下?;謝謝。我甚至沒有想到它可能是''的事實。我必須等待3分鐘才能接受答案。 – Shenanigator