Quelqu'un at-il réussi à définir des longueurs de champ maximales pour les champs de texte
Comment puis-je définir la longueur maximale d'un champ de texte. Voici le code que j'utilise
<%= text_field_tag(:create_text), :input_html => {:maxlength => 15, :size => 40} %>
mais je n'arrive pas à définir le nombre maximum de caractères pouvant être saisis dans le champ.
Voici comment vous pouvez le faire:
<%= text_field_tag 'create_text', nil, :maxlength => 15, :size => 40 %>
Source: http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-text_field_tag
Dans l'appel text_field_tag:
: taille se rapporte à la longueur physique de la zone de texte. Il sera assez grand pour permettre à autant de caractères d'être visibles dans la boîte. Mais l'utilisateur peut toujours entrer plus.
: maxlength est le nombre maximum de caractères que l'utilisateur peut entrer, quelle que soit la taille physique de la zone de texte. La zone de texte peut être plus grande ou plus petite, mais si vous définissez: maxlength => 5, ils ne pourront saisir que 5 caractères.
S'il s'agit également d'une limite stricte pour les données de la base de données, vous devez définir une validation. Cela vous empêche, par exemple, de le définir sur plus de caractères dans votre code Rails.
validates_length_of :column_name, :maximum => 5
Enfin, pour une approche par ceintures et bretelles et pour empêcher même le code qui va à l'encontre de la base de données de définir une mauvaise valeur, vous pouvez l'imposer au niveau de la base de données. Dans certains cas, un autre code que votre application Rails peut mettre à jour la base de données. Cela empêche les mauvaises données même dans ce cas.
En ajoutant une colonne dans une migration, vous le faites comme ceci:
add_column :table_name, :column_name, :string, :limit => 30
<%= text_field_tag :"description", '', maxlength: 5 %>
<input type="text" name="description" id="description" value="" maxlength="5">