我有一个Rails应用程序,使用Devise进行用户注册/管理。
在我的用户模型中,我具有以下内容:
validates :first, presence: true
validates :last, presence: true
validates :email, presence: true, format: {with: VALID_EMAIL_REGEX}, uniqueness: {case_sensitive: false}
validates :url, format: {with: NO_SPACES_REGEX}, presence: true
填写表单时,如果我没有填写url字段并提交表单,则会收到以下消息(气球指向url输入框):
请输入一个URL。
这发生在客户端。如果在表单中填写了URL字段,并在其他任何必填字段中填写了表单,则该表单将提交,然后我在一个单独的红色框中收到消息,要求我输入缺少的值。
知道为什么url字段是唯一一个在本地验证的,预先提交表单但没有其他表单的字段吗?
关于此字段的唯一其他独特之处在于,它以以下形式分配了一个值:
<div class="control-group">
<div class="control-label"><%= f.label :url, URL_STR %></div>
<div class="controls"><%= f.url_field :url, :value => "http://", :class => "request-text-line" %></div>
</div>
其他字段均未分配任何值。
原因在于字段的类型。如果在浏览器中查看源代码,您将看到类型为“ url”。hltm5中有许多类型可以触发客户端验证。部分列表是电子邮件,URL,数字,电话,日期,但还有更多。您通过使用url_field触发了此操作,这导致类型为“ url”,从而导致客户端验证。普通的文本字段当然不会这样做(不能这样做)。但是,例如,对于您的电子邮件字段,您可以使用email_field这样类似
如果您想了解更多信息,可以参考http://www.the-art-of-web.com/html/html5-form-validation/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句