【问题标题】:Setting a default value for a search field in rails为 rails 中的搜索字段设置默认值
【发布时间】:2015-05-19 20:06:39
【问题描述】:

在控制器中:

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。

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

【问题讨论】:

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


    【解决方案1】:

    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?
    

    【讨论】:

    • 是的,那个技巧.present?谢谢。我什至没有想到它可能是''。我必须等待 3 分钟才能接受答复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2014-05-29
    相关资源
    最近更新 更多