I have a collection set that has the days of the month 1 through 31. I validate in my model. When the page loads with an :birth error the prompt "Day" is no longer in my drop down box.
In my view
<%= f.label :birth %>
<%= f.collection_select(:birth_day, 1..31, :to_i, :to_i , :prompt=>'Day') %>
In my Model
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
Generated Source - Before Error
<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>
Generated Source - After Error
<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>
Please let me know what I am doing wrong. I need the prompt in the drop down since Day is not a required field. Thanks!