Sha*_*r's 3 string parsing ruby-on-rails date
我有一个日期时间选择器,它通过搜索框发送签入和签出日期。然后,URL看起来像;
http://localhost:3000/locations/listings?utf8=%E2%9C%93&search=london&start_date=12%2F04%2F16&end_date=20%2F04%2F16
Run Code Online (Sandbox Code Playgroud)
然后我将params散列并解析字符串,
start_date = Date.parse(params[:start_date])
end_date = Date.parse(params[:end_date])
Run Code Online (Sandbox Code Playgroud)
首先,我必须检查一下 if (start_date.present? && end_date.present?)
,并且工作正常。
但是,如果用户手动键入其他内容而不是日期,例如;
http://localhost:3000/locations/listings?utf8=%E2%9C%93&search=london&start_date=londoneye6&end_date=20%2F04%2F16
Run Code Online (Sandbox Code Playgroud)
然后,我当然会出错。
invalid date
Run Code Online (Sandbox Code Playgroud)
我应该如何控制字符串是否可在控制器操作中解析。我还应该检查london-eye, london/eye
字符串,其中包括- /
谢谢
您必须尝试解析字符串并进行救援 ArgumentError
begin
myDate = Date.parse("31-01-2016")
rescue ArgumentError
# handle invalid date
end
Run Code Online (Sandbox Code Playgroud)
一行(请注意,这可以挽救所有错误)
myDate = Date.parse("31-01-2016") rescue nil
Run Code Online (Sandbox Code Playgroud)
您可以使用 验证时间Date.parse
,并ArgumentError
在解析返回nil
时捕获异常:
控制器:
def param_date date
Date.parse(date)
rescue ArgumentError
nil
end
start_date = param_date(params[:start_date])
end_date = param_date(params[:end_date])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2640 次 |
最近记录: |