2015-05-19 118 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