Ruby on Rails - Formulaires HTML
Forme
Pour créer une balise de formulaire avec l'action spécifiée et avec la requête POST, utilisez la syntaxe suivante -
<%= form_tag :action => 'update', :id => @some_object %>
<%= form_tag( { :action => :save, }, { :method => :post }) %>
Utilisez: multipart => true pour définir un formulaire MIME-multipart (pour les téléchargements de fichiers).
<%= form_tag( {:action => 'upload'}, :multipart => true ) %>
Téléchargement de fichiers
Définissez un formulaire en plusieurs parties dans votre vue -
<%= form_tag( { :action => 'upload' }, :multipart => true ) %>
Upload file: <%= file_field( "form", "file" ) %>
<br />
<%= submit_tag( "Upload file" ) %>
<%= end_form_tag %>
Gérez le téléchargement dans le contrôleur -
def upload
file_field = @params['form']['file'] rescue nil
# file_field is a StringIO object
file_field.content_type # 'text/csv'
file_field.full_original_filename
...
end
Champs de texte
Pour créer un champ de texte, utilisez la syntaxe suivante -
<%= text_field :modelname, :attribute_name, options %>
Jetez un œil à l'exemple suivant -
<%= text_field "person", "name", "size" => 20 %>
Cela générera le code suivant -
<input type = "text" id = "person_name" name = "person[name]"
size = "20" value = "<%= @person.name %>" />
Pour créer des champs masqués, utilisez la syntaxe suivante;
<%= hidden_field ... %>
Pour créer des champs de mot de passe, utilisez la syntaxe suivante;
<%= password_field ... %>
Pour créer des champs de téléchargement de fichiers, utilisez la syntaxe suivante;
<%= file_field ... %>
Zone de texte
Pour créer une zone de texte, utilisez la syntaxe suivante -
<%= text_area ... %>
Jetez un œil à l'exemple suivant -
<%= text_area "post", "body", "cols" => 20, "rows" => 40%>
Cela générera le code suivant -
<textarea cols = "20" rows = "40" id = "post_body" name =" post[body]">
<%={@post.body}%>
</textarea>
Bouton radio
Pour créer un bouton radio, utilisez la syntaxe suivante -
<%= radio_button :modelname, :attribute, :tag_value, options %>
Jetez un œil à l'exemple suivant -
radio_button("post", "category", "rails")
radio_button("post", "category", "java")
Cela générera le code suivant -
<input type = "radio" id = "post_category" name = "post[category]"
value = "rails" checked = "checked" />
<input type = "radio" id = "post_category" name = "post[category]" value = "java" />
Bouton de case à cocher
Pour créer un bouton de case à cocher, utilisez la syntaxe suivante -
<%= check_box :modelname, :attribute,options,on_value,off_value%>
Jetez un œil à l'exemple suivant -
check_box("post", "validated")
Cela générera le code suivant -
<input type = "checkbox" id = "post_validate" name = "post[validated]"
value = "1" checked = "checked" />
<input name = "post[validated]" type = "hidden" value = "0" />
Vérifions un autre exemple -
check_box("puppy", "gooddog", {}, "yes", "no")
Cela générera le code suivant -
<input type = "checkbox" id = "puppy_gooddog" name = "puppy[gooddog]" value = "yes" />
<input name = "puppy[gooddog]" type = "hidden" value = "no" />
Options
Pour créer une liste dropdopwn, utilisez la syntaxe suivante -
<%= select :variable,:attribute,choices,options,html_options%>
Jetez un œil à l'exemple suivant -
select("post", "person_id", Person.find(:all).collect {|p| [ p.name, p.id ] })
Cela pourrait générer le code suivant. Cela dépend de la valeur disponible dans votre base de données. -
<select name = "post[person_id]">
<option value = "1">David</option>
<option value = "2">Sam</option>
<option value = "3">Tobias</option>
</select>
Date Heure
Voici la syntaxe pour utiliser les données et l'heure -
<%= date_select :variable, :attribute, options %>
<%= datetime_select :variable, :attribute, options %>
Voici des exemples d'utilisation -
<%=date_select "post", "written_on"%>
<%=date_select "user", "birthday", :start_year => 1910%>
<%=date_select "user", "cc_date", :start_year => 2005,
:use_month_numbers => true, :discard_day => true, :order => [:year, :month]%>
<%=datetime_select "post", "written_on"%>
Balise de formulaire de fin
Utilisez la syntaxe suivante pour créer la balise </form> -
<%= end_form_tag %>