Comment désactiver l'astérisque sur les champs obligatoires du formulaire?
Quand j'ajoute l'attribut' Required '
pour les champs de saisie html, Rails pré-pend un astérisque ( * ) avant l'étiquette.
Est-ce que quelqu'un sait comment empêcher cela?
Pour une raison quelconque Rails transforme ceci:
<%= f.input :Company, :input_html => {:value => "", :id => "company_name"}, :label => "company name" %>
Dans ceci:
<div class="input string required">
<label for="company_name" class="string required">
<abbr title="required">*</abbr> company name</label>
<input type="text" value="" size="50" required="required" name="lead[Company]" id="company_name" class="string required">
</div>
Je n'aime pas qu'il enveloppe tout dans un DIV et ajoute un élément ABBR à la fête.
Comment puis-je empêcher cela?
10 réponses
Dans config / initializers / simple_form.RB ajouter cette ligne:
config.label_text = lambda { |label, required| "#{label}" }
Vous pouvez simplement définir la marque requise sur la valeur vide dans le fichier de paramètres régionaux de simple_form:
en:
simple_form:
required:
text: 'required'
mark: '*'
Ou utilisez CSS pour le cacher.
J'utilise Rails 3.1, et j'ai le code de vue suivant dans mon _form.HTML.erb pour un modèle donné:
<div>
<%= f.label :full_name %><br/>
<%= f.text_field :full_name, :required => true %><br/>
</div>
L'étiquette ne montre pas d'astérisque si vous le faites de cette façon. Sauf si vous postez du code, Je ne peux pas être sûr de votre approche et si ma solution correspondrait à cette approche.
Réponse Mise À Jour: On dirait que vous avez hérité de ce code de quelqu'un. En tout cas, après avoir lu votre exemple de code, vous utilisez certainement la gemme simple_form. Informations sur ce bijou peut être trouvé ici https://github.com/plataformatec/simple_form . pour répondre à votre question, si vous modifiez votre code comme suit:
<%= f.input :Company, :input_html => {:value => "", :id => "company_name"}, :label => "company name", :required => false %>
Cela devrait désactiver l'astérisque.
J'ajouterais, en fonction de votre dégoût pour le HTML généré à partir de simple_form, il semble que vous devriez simplement supprimer la gemme et réécrire votre code de formulaire en utilisant les aides de formulaire par défaut Rails, qui peuvent être lues ici http://guides.rubyonrails.org/form_helpers.html . Selon la taille de la base de code, il serait peut-être préférable de la sucer et d'apprendre à utiliser la gemme simple_form pour gagner du temps, mais si vous pensez avoir le temps de tout changer, allez-y.
Le moyen le plus simple est de le cacher avec ce css:
abbr[title="required"] {
display: none;
}
Ce n'est pas du tout des rails. C'est la gemme simple_form. Donc, si vous ne voulez pas que tous les éléments d'emballage n'utilisent pas simple_form. Utiliser les Rails de la forme aides. Ce serait plus simple que de personnaliser quelque chose que vous n'aimez pas.
Pour toute personne utilisant Formtastic et ayant ce problème, vous pouvez supprimer les astérisques en éditant le fichier de configuration, qui est généralement app / config / initializers / formtastic.rb .
Modifier cette ligne: # Formtastic::SemanticFormBuilder.required_string = "(required)"
Être: Formtastic::SemanticFormBuilder.required_string = ""
Plus d'infos ici.
Code qui m'a aidé à résoudre le problème de l'astérisque:
abbr[title="required"] {
display: none;
}
La réponse choisie et les autres suggestions demandant de changer le HTML dans les paramètres régionaux du fichier dint m'aident avec la dernière gemme Simple_form.
En dehors de la configuration globale suggérée dans la réponse acceptée, vous pouvez passer {[0] } en option d'entrée, ou defaults: { required: false }
pour le définir pour l'ensemble du formulaire.
J'ai découvert que si vous souhaitez supprimer l'astérisque(*) derrière elle, puis tout ce que vous avez à faire est d'aller à ce fichier file /config/locales/simple_form.en.yml
Une fois de plus n'est pas une bonne pratique pour changer vos fichiers de configuration pour les gemmes et quelque chose que vous utilisez pour une raison quelconque, c'est toujours une question de pourquoi utilisez-vous vraiment simple_form!
Mais par exemple, j'ai découvert cela parce qu'il y a de grandes choses à propos de simple_form que nous utilisons, mais de nos jours, c'est une meilleure pratique d'utilisation pour avoir les astérisques aucun champs requis alors ceux requis.
Vous pouvez utiliser form_for
et remplacer la méthode def label
dans config/initializer
pour ajouter un astérisque pour les champs obligatoires suivants:
def label(object_name, method, content_or_options = nil, options = nil, &block)
if content_or_options.is_a?(Hash)
content_or_options.each do |key, val|
options[key] = val
end
content_or_options = method.to_s
end
content_or_options ||= method.to_s
presence_validations = [ActiveModel::Validations::PresenceValidator, ActiveRecord::Validations::PresenceValidator]
class_obj = options[:object].class if options[:object]
class_obj ||= object_name.to_s.camelize.constantize
validations = class_obj.validators_on(method.to_s).map(&:class)
if (presence_validations.map { |pv| validations.include?(pv) }).any?
content_or_options += "*"
end
Tags::Label.new(object_name, method, self, content_or_options, options).render(&block)
end
Cette méthode met l'astérisque après tous les champs obligatoires, si vous avez utilisé normale form_for
, et utilisé validates_presence_of