1 から 31 までの日を含むコレクション セットがあります。モデルで検証します。ページが :birth エラーで読み込まれると、プロンプト「Day」がドロップダウン ボックスに表示されなくなります。
私からしてみれば
<%= f.label :birth %>
<%= f.collection_select(:birth_day, 1..31, :to_i, :to_i , :prompt=>'Day') %>
私のモデルでは
validate :validate_dates
def validate_dates
b_month = self.birth_month.to_i
if (b_month == 4 || b_month == 6 || b_month == 9 || b_month == 11)
if (self.birth_day == 31)
self.errors.add(:birth, "is invalid")
end
end
end
生成されたソース - エラー前
<label for="individual_birth">Birth</label>
<select id="individual_birth_day" name="individual[birth_day]">
<option value="">Day</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
....
</select>
生成されたソース - エラー後
<div class="field_with_errors"><label for="individual_birth">Birth</label></div>
<select id="individual_birth_day" name="individual[birth_day]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
....
<option value="31" selected="selected">31</option>
</select>
私が間違っていることを教えてください。日は必須フィールドではないため、ドロップダウンにプロンプトが必要です。ありがとう!