Rails和简单形式:novalidate属性不起作用

时间:2013-10-11 14:39:39

标签: ruby-on-rails html5 simple-form

我的登录页面(使用简单表单构建)默认添加html属性,用于Chrome无法识别的电子邮件输入上的浏览器验证,并显示“请匹配请求的格式。”

可能是Chrome错误(在firefox上运行),所以尝试使用简单的表单配置禁用浏览器验证 SimpleForm.html5SimpleForm.browser_validations(默认为false),重新启动了rails但保持相同的输入:

<input autofocus="autofocus" class="string email optional form-control
input-xlarge" id="customer_email" maxlength="255"
name="customer[email]" pattern="\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z"
size="255" type="email">

还尝试在表单html: {novalidate: true}上添加相同的输出

最后尝试添加input_filed :novalidate => true,将html输出更改为:

<input autofocus="autofocus" class="string email optional form-control
input-xlarge" id="customer_email" maxlength="255"
name="customer[email]" pattern="\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z"
size="255" type="email" novalidate="novalidate">

但是存在浏览器验证和Chrome错误。

有什么想法要解决吗?

PS:使用Bootstrap,登录表单来自Devise资源。

1 个答案:

答案 0 :(得分:1)

您可以从导致问题的输入元素中删除pattern属性。您只需在输入字段中设置pattern: false

因此,您的输入字段可能如下所示:

<%= f.input_field :email, type: 'email', required: true, autofocus: true, class: 'form-control', pattern: false %>

nil不起作用;必须为false。)

这在Rails 4中对我有用。