我开始使用
Ruby on Rails,我遇到了一些问题.我有一个包含3个字段的表单,这是代码:
<%= form_for(resource,as: resource_name,url: registration_path(resource_name)) do |f| %> <%= devise_error_messages! %> <div class="field"> <%= f.text_field :name,autofocus: true,placeholder: "Name" %> </div> <div class="field"> <%= f.email_field :email,placeholder: "Email" %> </div> <div class="field"> <%= f.number_field :age,placeholder: "Age" %> </div> <div class="actions"> <%= f.submit "Sign up" %> </div> <% end %>
在电子邮件字段中,当您编写非电子邮件并尝试提交的内容时,浏览器(chrome或firefox)会显示错误消息,指出该字段必须包含@.年龄字段也是如此,如果输入了一个字母,浏览器会显示一个错误,表示该字段只接受数字.
我想知道当你尝试提交时,如果任何字段为空,浏览器会显示一条消息.我知道如何在cakePHP中做到这一点,所以我想它也可以在ruby中完成.我已经验证了模型中的字段,将显示设置为true,但这仅适用于在您提交并再次重新加载页面后显示消息.
解决方法
当你使用类似的东西:
f.email_field
它正在生成HTML5输入元素,告诉浏览器它必须是有效的电子邮件. HTML 5还有一个required =’required’选项,可用于防止空白字段.
您可以像这样添加它:
<div class="field"> <%= f.email_field :email,placeholder: "Email",:required => 'required' %> </div>
这将为表单元素添加required =’required’.请注意,在HTML5中,您只需要表单元素中所需的单词,但我知道在Rails中添加它的唯一方法是使用我在这里向您展示的选项表单.
这将阻止在没有该字段的情况下提交表单.这适用于当前版本的Firefox,Chrome,Opera和IE11. Safari将阻止提交但不表示原因.它什么都不做.
我会检查一下:http://blueashes.com/2013/web-development/html5-form-validation-fallback/