0

からのユーザー入力を検証しようとしています。特に と からの入力を検証しようとしていdate_selectますtime_select。次のように入力を処理します。

ビューの入力タグ:

<%= date_select :date, 'date', use_short_month: true %>
<%= time_select :Starttime , 'Starttime', default: Time.now, minute_step: 30,:ignore_date => true %>

入力を (コントローラーで) Time-Object に変換します。

@Start = Time.new(date['date(1i)'].to_i, date['date(2i)'].to_i, date['date(3i)'].to_i, t_start["Starttime(4i)"].to_i, t_start["Starttime(5i)"].to_i)

ビューに表示@Startすると、すべて問題ありません。2013-08-18 16:00:00 +0200

今、有効な入力の時間/日付をチェックしようとしています。したがって、コントローラーでこの関数を作成しました:

def check_date
if @Start < Time.now
  flash[:notice ]= "Booking has to be in the future!"
  return false
else
  return true
end
end

しかし、うまくいきません。err_msg。undefined method '<' for nil:NilClassが表示されます。そして、私はその理由を知りません。Time.nowとのビュー出力は@Start同じです。

Time-object の代わりに DateTime-object でもこれを試しましたが、同じエラーが表示されます。何か案は?

編集:

インデックス アクション:

def index
t_start= params[:Starttime]
date= params[:date]
if t_start && date
  @Start = Time.new(date['date(1i)'].to_i, date['date(2i)'].to_i, date['date(3i)'].to_i, t_start["Starttime(4i)"].to_i, t_start["Starttime(5i)"].to_i)
end
check_date
@tables = Table.search(params[:search])
end

ありがとう

4

1 に答える 1

0

私は自分でエラーを見つけました...メソッド呼び出しはifクエリ内にある必要があります。そうでない場合、@Startには値がありません。

ありがとう

于 2013-08-19T08:30:47.417 に答える