start_date と end_date を含む期間モデルがあります。Topic モデルに属します。
私のトピック フォームでは、期間も管理したいと考えています。最初に、期間内の 2 つの日付に対して 2 つのテキスト フィールドを使用しました。また、reject_if end_date が nil です。
accepts_nested_attributes_for :period,
reject_if: lambda { |p| p[:end_date].blank? }
できます。そして数か月後、日付を入力するためのいくつかの選択ステートメントを表示するdate_selectを使用するようにフォームを変更しました。
これを行ったとき、各選択が次のようになることがわかりました。
<select name="topic[period_attributes][end_date(1i)]" id="topic_period_attributes_end_date_1i">
1i
これは、reject_if が機能しなくなったことを意味し、すべてが拒否されることに注意してください。次のように変更する必要があります。
accepts_nested_attributes_for :period,
reject_if: lambda { |p| p[:'end_date(1i)']].blank? }
これは機能しますが、以前ほど良くはありません (日付の年だけをチェックするとエラーが発生しやすいようです)。
date_select を使用するときに拒否する正しい方法はありますか?