Ruby on Rails
Form Helpers
Recherche…
Introduction
Rails fournit des aides à la vue pour générer un balisage de formulaire.
Remarques
- Les types de saisie de
date
, y comprisdate
,datetime
,datetime-local
,time
,month
etweek
ne fonctionnent pas dans FireFox. -
input<type="telephone">
ne fonctionne qu'avec Safari 8. -
input<type="email">
ne fonctionne pas sur Safari
Créer un formulaire
Vous pouvez créer un formulaire en utilisant l'aide form_tag
<%= form_tag do %>
Form contents
<% end %>
Cela crée le code HTML suivant
<form accept-charset="UTF-8" action="/" method="post">
<input name="utf8" type="hidden" value="✓" />
<input name="authenticity_token" type="hidden" value="J7CBxfHalt49OSHp27hblqK20c9PgwJ108nDHX/8Cts=" />
Form contents
</form>
Cette balise de formulaire a créé un champ de saisie hidden
. Cela est nécessaire, car les formulaires ne peuvent pas être soumis avec succès sans cela.
Le second champ de saisie, nommé authenticity_token
ajoute une protection contre la cross-site request forgery
.
Créer un formulaire de recherche
Pour créer un formulaire de recherche, entrez le code suivant
<%= form_tag("/search", method: "get") do %>
<%= label_tag(:q, "Search for:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>
-
form_tag
: Ceci est l'aide par défaut pour créer un formulaire. C'est le premier paramètre,/search
est l'action et le second paramètre spécifie la méthode HTTP. Pour les formulaires de recherche, il est important de toujours utiliser la méthodeget
-
label_tag
: Cet assistant crée une<label>
html<label>
. -
text_field_tag
: Cela va créer un élément d'entrée avec dutext
type -
submit_tag
: crée un élément d'entrée avec le typesubmit
Helpers pour les éléments de formulaire
Cases à cocher
<%= check_box_tag(:pet_dog) %>
<%= label_tag(:pet_dog, "I own a dog") %>
<%= check_box_tag(:pet_cat) %>
<%= label_tag(:pet_cat, "I own a cat") %>
Cela va générer le HTML suivant
<input id="pet_dog" name="pet_dog" type="checkbox" value="1" />
<label for="pet_dog">I own a dog</label>
<input id="pet_cat" name="pet_cat" type="checkbox" value="1" />
<label for="pet_cat">I own a cat</label>
Boutons Radio
<%= radio_button_tag(:age, "child") %>
<%= label_tag(:age_child, "I am younger than 18") %>
<%= radio_button_tag(:age, "adult") %>
<%= label_tag(:age_adult, "I'm over 18") %>
Cela génère le code HTML suivant
<input id="age_child" name="age" type="radio" value="child" />
<label for="age_child">I am younger than 18</label>
<input id="age_adult" name="age" type="radio" value="adult" />
<label for="age_adult">I'm over 18</label>
Zone de texte
Pour créer une zone de texte plus grande, il est recommandé d'utiliser text_area_tag
<%= text_area_tag(:message, "This is a longer text field", size: "25x6") %>
Cela créera le code HTML suivant
<textarea id="message" name="message" cols="25" rows="6">This is a longer text field</textarea>
Numéro de champ
Cela va créer un élément d' input<type="number">
<%= number_field :product, :rating %>
Pour spécifier une plage de valeurs, nous pouvons utiliser l'option in:
<%= number_field :product, :rating, in: 1..10 %>
Champ de mot de passe
Parfois, vous voulez que les caractères saisis par l'utilisateur soient masqués. Cela va générer un <input type="password">
<%= password_field_tag(:password) %>
Champ Email
Cela va créer un <input type="email">
<%= email_field(:user, :email) %>
Champ téléphonique
Cela créera un <input type="tel">
.
<%= telephone_field :user, :phone %>
Assistants de date
input[type="date"]
<%= date_field(:user, :reservation) %>
input[type="week"]
<%= week_field(:user, :reservation) %>
input[type="year"]
<%= year_field(:user, :reservation) %>
input[type="time"]
<%= time_field(:user, :check_in) %>
Menu déroulant
Exemple standard: @models = Model.all select_tag "models", options_from_collection_for_select (@models, "id", "name"), {}
Cela générera le code HTML suivant: David
Le dernier argument est des options, qui acceptent les éléments suivants: {multiple: false, disabled: false, include_blank: false, prompt: false}
Plus d'exemples peuvent être trouvés: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag