我在使用simple_form显示错误日期字段时遇到问题。 我的注册表中有以下代码:
.row
.col-md-6.col-md-offset-3
%fieldset
%h2 Rejestracja
%hr.colorgraph/
= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
= f.error_notification
.form-group
= f.input :username
.form-group
= f.label "Birthdate"
%br
= f.date_select :birth_date, end_year: 1950, start_year: (Time.now.year - 18)
.form-group
= f.input :email
.form-group
= f.input :password
.form-group
= f.input :password_confirmation, :required => false
.row.center
.col-xs-6.col-sm-6.col-md-6.center
= f.button :submit, "Submit", class: "btn btn-lg btn-success btn-block"
以下用户模型中的年龄验证:
validate :at_least_18
def at_least_18
if self.birth_date
errors.add(:birth_date, 'You must be 18 years or older.') if self.birth_date > 18.years.ago.to_date
end
end
问题在于,当我使用有效的birth_date提交表单时,simple_form不会像其他字段一样显示错误:
但是当我改变时
= f.date_select :birth_date, end_year: 1950, start_year: (Time.now.year - 18)
到
= f.input :birth_date
它正在运作,但现在我有三个丑陋的领域...... 有什么想法吗?
答案 0 :(得分:1)
这是由带有错误的输入的CSS样式引起的。
你可以通过添加一些CSS来正确设置下拉菜单的样式,但是我认为从根本上说你最好用一个文本字段替换3个下拉框并使用jquery的日期选择器来填充它。
这不仅可以为您的用户提供更好的日期输入体验,还可以解决您的错误布局问题。