web-dev-qa-db-fra.com

HTML5 'requis' validation dans Ruby sur Rails formes

Je ne vois cette question nulle part ailleurs, espérons-le rapide et facile.

Comment utiliser des validateurs HTML5, tels que "requis", dans mes formulaires (Ruby on Rails)?

Par exemple, à quoi ressemblerait ce formulaire de base si j'utilisais la validation 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%>

Il va sans dire que la validation côté serveur est toujours requise.

59
LpLrich

Ah, c'était facile :required => true

par exemple: <%=t.text_area :content, :rows => 3, :required => true%>

93
LpLrich

Juste pour ajouter, si vous avez un champ email, vous pouvez également utiliser l'attribut 'pattern' pour valider le format de l'email

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

:)

39
prashantsahni

Ajout à la réponse @prashantsahni. Vous pouvez également utiliser type = 'email' à la place du motif regex, votre erb-template ressemblera à ceci:

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

Plus d'informations sur les validations de formulaires utilisant html5

10
Dmitry Davydov

Ceci est un petit exemple avec les attributs communs et pour obligatoire vous ajoutez seulement required: true, mais n'oubliez pas d'appliquer cette validation dans votre backend.

<%= f.text_field
    id: "yourID",
    class: "yourCLass",
    placeholder: "Your message",
    maxlength: 14,
    required: true
%>
4
Ezequiel García

Cela pourrait être facilement fait en ajoutant :required => true paramètre dans vos champs de saisie:

Par exemple

f.text_field :first_name, :required => true
text_field_tag :first_name, nil, :required => true

En poussant la limite un peu plus loin, vous pouvez ajouter un matcher de modèle pour votre entrée, tel que l'email:

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

Nouvelle syntaxe <%= f.text_field :email, class: "form-control", required: true %>

2
gsumk

Pour compléter les autres réponses, il existe un génial gem html5_validations , qui tire le meilleur parti des validations HTML5 lues à partir de ActiveRecord Validations à partir du modèle. Aucun code supplémentaire n'est nécessaire, il suffit de l'installer.

1
Alex Castaño

Utilisez ceci si rien ne fonctionne

include_blank: false, required: true
0
Bilal A.Awan