在rails

时间:2015-05-19 20:06:40

标签: ruby-on-rails ruby-on-rails-4

在控制器中:

Order.search_one(year)

 private 
    def year
      year = params[:dyear]
      year = Time.now.year.to_s unless year
      year.gsub(/\D/,'') 
    end

形式:

text_field_tag:dyear,params [:dyear]

在模型中:

 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。

关于它为什么将空值传递给模型而不是当前年份的任何想法?

1 个答案:

答案 0 :(得分:3)

<%= book.user.name %>的值可能是params[:dyear],在有条件的情况下,基本上是这样的:

''

因此,您应该使用string = '' if string puts "true?" else puts "false" end #=> "true?" 或:

params[:dyear].present?