0

簡略化したいフォームがあります。開始日と終了日を記録していますが、開始日と日数のドロップダウンのみをユーザーに表示したいと思います。

しかし、モデルに問題があり、正しく保存しています。

最初の部分は機能します。

  def date=(thedate)
     #puts the startdate in the correct format...
     self.startdate = Date.strptime(thedate, '%m/%d/%Y')
  end

私がしなければならない問題は、終了日が開始日+それ自体が仮想属性であるno_daysに基づいているという事実に関係しています。2番目の部分をafter_validationコールバックとして実行しようとしましたが、機能していないようです。

  def set_dates
    if self.startdate
      self.enddate = self.startdate + days
    end  
  end
4

1 に答える 1

1

まず、startdateの日付属性を変換する必要があるのはなぜですか?自分の形のようなものを使ってみませんf.date_select :startdateか?

次に、モデルで次のようなものが必要です。このようなものをattr_accessor :number_of_days使用して、フォームの整数としてnumber_of_daysを取得できますf.select :number_of_days, (1..10).to_a(必要に応じて配列を設定します)。

コールバックは次のように設定できます。

after_validation :set_enddate

def set_enddate
  if self.startdate
    self.enddate = self.startdate + self.number_of_days.days
  end
end
于 2010-10-13T15:31:34.380 に答える