我有一个预订应用程序,我在Ruby rails应用程序中将Date params传递给来自Bootstrap Date-picker的URL,它还检测并处理URL上无效日期的手动输入。
但是,在URL用户可以将Date params更改为过去的日期并继续下一步。由于我将最小日期设置为日期选择器中的日期,我想要阻止此操作,我还需要检测过去的“有效”日期,因为它目前允许用户进行预订而不是重定向(如检测到的那样)当用户输入无效日期时,即55/09/2017)
它适用于JavaScript,但不适用于使用Ajax的页面。 有没有什么办法解决这一问题 ?或者无论如何不使用JavaScript来处理它?</ p>
注意: - 我将Date值动态传递给下一页,它与Database中的数据没有任何关系。
更新:工作代码
module DateCheckerHelper
def min_date_validation
date =Date.strptime(params[:outbound],"%d/%m/%Y")
date < Date.today
end
end
class MyController < ApplicationController
include DateCheckerHelper
def show
if min_date_validation
redirect_to root_path
end
end
end
处理参数错误(无效日期)
class ApplicationController < ActionController::Base
rescue_from ArgumentError, :with => :argument_error_rescue
private
def argument_error_rescue
redirect_to root_path
end
end
答案 0 :(得分:0)
我通过params使用这个设置来处理日期:
再次编辑:更新以反映助手和日期选择器的使用,如果日期早于今天,则使用重定向。
class SomeClass < ApplicationController
def method
if !date_valid?(params[:date])
redirect_to root_url, notice: "What were you thinking?"
end
end
end
module SomeHelper
def date_valid?(date)
date_array = date.split("/").map(&:to_i)
Date.valid_date?(*date_array) && Date.new(date) > Date.today
end
end