我有一个集合集,其中包含从 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>
请让我知道我做错了什么。我需要下拉菜单中的提示,因为 Day 不是必填字段。谢谢!