Ruby on rails Rails中的字符串输入到日期错误消息

Ruby on rails Rails中的字符串输入到日期错误消息,ruby-on-rails,ruby,validation,Ruby On Rails,Ruby,Validation,我想检查用户的输入是否可以转换为日期。如果不是,则应该有一个警报,指定的值应该是date。请帮助我编辑控制器elsif部件 我的输入文本字段: = text_field_tag :from, '', as: :string, class: 'datepicker form-control', placeholder: "From", label: false = text_field_tag :to, '', as: :string, class: 'datepicker form-contro

我想检查用户的输入是否可以转换为日期。如果不是,则应该有一个警报,指定的值应该是date。请帮助我编辑控制器elsif部件

我的输入文本字段:

= text_field_tag :from, '', as: :string, class: 'datepicker form-control', placeholder: "From", label: false
= text_field_tag :to, '', as: :string, class: 'datepicker form-control', placeholder: "To", label: false
控制器:

def recalculate
  from, to = params[:from], params[:to]
  if from.empty? || to.empty?
    redirect_to tarriff_path(@tarriff), alert: "Can't be empty"
  elsif ???
    redirect_to tarriff_path(@tarriff), alert: "Should be date"
  else
    ...
    redirect_to tarriff_path(@tarriff), notice: "Was recalculated"
  end
end
您可以使用Date.parse

这里的文档

希望能有所帮助。

您可以使用Date.parse

这里的文档


希望它能有所帮助。

创建一个新方法来解析日期值,并返回true或false以保持代码的整洁

require 'date'

def recalculate
  from, to = params[:from], params[:to]
  if from.empty? || to.empty?
    redirect_to tarriff_path(@tarriff), alert: "Can't be empty"
  elsif valid_date?(from) && valid_date(to)
    redirect_to tarriff_path(@tarriff), alert: "Should be date"
  else
    ...
    redirect_to tarriff_path(@tarriff), notice: "Was recalculated"
  end
end

def valid_date(date)
    Date.parse(date.to_s) rescue nil ? true : false
end

创建一个新方法来解析日期值,并返回true或false以保持代码的整洁

require 'date'

def recalculate
  from, to = params[:from], params[:to]
  if from.empty? || to.empty?
    redirect_to tarriff_path(@tarriff), alert: "Can't be empty"
  elsif valid_date?(from) && valid_date(to)
    redirect_to tarriff_path(@tarriff), alert: "Should be date"
  else
    ...
    redirect_to tarriff_path(@tarriff), notice: "Was recalculated"
  end
end

def valid_date(date)
    Date.parse(date.to_s) rescue nil ? true : false
end