我尝试将View中的值与来自DB的created_at进行比较,但我遇到了这个问题"未定义的方法`to_datetime' for {" year" =>" 2015"," month" =>" 11"," day" =>" 7"}:ActionController的::参数" 的。我没有想法。
控制器:
def data_search
@SDB=[]
startt=params[:start_date].to_datetime
endt=params[:end_date].to_datetime
Offer.where(created_at: [startt..endt]).each do |f|
@SDB.push(f)
end
end
来自search.html.erb的细分:
<%= select_date Date.today, :prefix => :start_date %>
<%= select_date Date.today, :prefix => :end_date%>
没有&#39; to_datetime&#39;我有范围错误值
答案 0 :(得分:0)
to_datetime
是一个关于字符串的方法,因为你似乎有一些哈希表。
需要其他形式的转换。就像是
DateTime.new(params[:start_date]["year"], params[:start_date]["month"], params[:start_date]["day"])
可能会有效,尽管我建议使用单独的函数将params散列转换为DateTime(基本上将原始代码包装在更清晰的函数中)。
答案 1 :(得分:0)
从您的视图生成的参数是一个哈希,其中包含“年”,“月”,“日”。您需要先将其转换为“2015-11-07”之类的字符串,然后调用to_datetime
以获取日期时间值。我在我的一个项目中更改了一些代码以适合您的变量:
start_date = parames[:start_date][:year] + '-' + parames[:start_date][:month] + '-' + parames[:start_date][:day]
startt = start_date.to_datetime