68

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

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

例如,如果我在其中使用 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%>

不用说,仍然需要服务器端验证。

4

8 回答 8

114

啊,这很容易:required => true

例如:<%=t.text_area :content, :rows => 3, :required => true%>

于 2012-11-24T14:26:25.250 回答
40

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

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

:)

于 2012-11-24T16:16:49.673 回答
11

除了@prashantsahni 答案。您也可以使用type = 'email'而不是正则表达式模式,那么您的 erb 模板将如下所示:

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

有关使用 html5 进行表单验证的更多信息

于 2015-05-13T18:37:34.783 回答
5

新语法 <%= f.text_field :email, class: "form-control", required: true %>

于 2019-04-17T20:55:36.680 回答
5

这是一个带有通用属性的小示例,对于必需,您只需添加 required:true,但不要忘记在后端应用此验证。

<%= f.text_field
    id: "yourID",
    class: "yourCLass",
    placeholder: "Your message",
    maxlength: 14,
    required: true
%>
于 2016-03-24T13:23:10.917 回答
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}'
于 2013-03-13T10:47:55.137 回答
3

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

于 2017-05-16T11:09:37.890 回答
1

如果没有任何效果,请使用它

include_blank: false, required: true
于 2019-07-17T19:26:04.980 回答