Ruby on Rails表单中的HTML5“required”验证

70

我在其他地方找不到这个问题,希望它是一个快速简单的问题。

如何在我的表单(ruby on rails)中使用HTML5验证器,例如“required”?

例如,如果我在其中使用HTML5验证,这个基本表单会是什么样子?

<%=form_for @testimonial do |t|%> 
<dl>
  <dt><label for="testimonial_rating">Rating</label></dt>
  <dd><%=t.select :rating, Testimonial.ratings%></dd>
  <dt><label for="testimonial_content">Comments</label></dt> 
  <dd><%=t.text_area :content, :rows => 3%></dd>
  <dd><button class="button success">Submit Review</button></dd>
</dl>
<%end%>

毫无疑问,服务器端验证仍然是必需的。

你可能需要使用js才能使其在Safari上正常工作:https://dev59.com/j1wY5IYBdhLWcg3wYW5X - hii
8个回答

116
啊,很容易的 :required => true 例如:<%=t.text_area :content, :rows => 3, :required => true%>

有没有想过如何使用simple_form来实现相同的功能? - Alfie
1
同样的方式...必需:真 - brntsllvn

40

补充一点,如果您有一个邮件字段,您也可以使用“pattern”属性来验证电子邮件格式。

<%=form.text_field :email, :required => true, :pattern => '[^@]+@[^@]+\.[a-zA-Z]{2,6}' %>

:)


8
为什么要这样做,当你可以使用form.email_field呢? - Andrew Hendrie
2
顺便提一下,永远不要尝试使用电子邮件验证正则表达式。这会让各种边缘情况通过,或者阻止实际上有效的情况。最好允许所有内容,并通过尝试发送电子邮件并要求他们在任何操作发生之前单击其中的链接来在服务器端进行检查。 - anon

11

补充@prashantsahni的回答。你也可以使用type = 'email'代替正则表达式模式,这样你的erb模板将如下所示:

除此之外,还需要进行其他配置,以便在表单中输入电子邮件地址时能够正确验证其格式。

<%= f.email_field :email, id: 'user_email', type:'email', required: true, placeholder: "Email" %>  

HTML5表单验证详解


这对我失败了 - 添加 type:'email' 没有添加任何HTML5验证并允许我继续。 - GMarx
1
据我所知,f.email_field 已经被创建为 type='email' - Burak Kaymakci

5
新语法 <%= f.text_field :email, class: "form-control", required: true %> 该语法为IT技术相关内容。

5
这是一个关于常见属性的小例子,如果需要必填项验证,只需添加 required:true,但不要忘记在后端应用这些验证。
<%= f.text_field
    id: "yourID",
    class: "yourCLass",
    placeholder: "Your message",
    maxlength: 14,
    required: true
%>

4
这可以通过在输入字段中添加 :required => true 参数来轻松完成:
例如:
f.text_field :first_name, :required => true
text_field_tag :first_name, nil, :required => true

将边界推得更远,您可以为输入添加模式匹配器,例如电子邮件:

f.email_field :email, 'Email', :required => true, :pattern => '[^@]+@[^@]+\.[a-zA-Z]{2,6}'

感谢您的模式匹配评论,但您真的应该阅读问题的回答,包括我的回答,这使得此答案的第一部分变得多余。您可能没有阅读其他答案。在回答之前,您应该确实这样做。并不是我比您更懂,正如您所看到的,与您相比,我的声望价值非常小。 - LpLrich

3

为了完成其他答案,有一个很棒的gem html5_validations,它可以利用HTML5验证从模型中读取ActiveRecord验证。不需要额外的代码,只需安装即可。


1
使用此代码,如果无法正常工作。
include_blank: false, required: true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接