1
votes

Comment masquer le titre du formulaire qui apparaît à l'intérieur d'une balise de légende lors de la génération de cases à cocher pour une association à l'aide de simple-form?

J'utilise un formulaire simple (Ruby 2.5.1, Rails 5.2.3, un formulaire simple 4.1.0) pour générer des cases à cocher pour une association. L'élément de formulaire qu'il génère comprend un titre global pour la section qui correspond par défaut au nom de l'association (dans ce cas, "Balises d'élément de menu") et se trouve à l'intérieur d'une balise. Je veux le cacher complètement, mais je ne peux pas.

Je peux changer le texte en "Test" en utilisant le label: "Test" , mais label: false ne le cache pas comme je m'y attendais. J'ai lu la documentation et fait de mon mieux pour lire la source, mais je ne peux pas faire de progrès.

Voici l'appel de forme simple:

<%= simple_form_for @listing do |f| %>
  <%= f.simple_fields_for :menus do |f| %>
    <%= f.simple_fields_for :menu_sections do |f| %>
      <%= f.simple_fields_for :menu_items do |f| %>
        <%= f.association :menu_item_tags, as: :check_boxes %>
      <% end %>
    <% end %>
  <% end %>
<% end %>

Et voici la sortie HTML:

    <fieldset class="form-group check_boxes optional listing_menus_menu_sections_menu_items_menu_item_tags form-group-valid"> 
        <legend class="col-form-label pt-0">Menu item tags</legend>
        <input type="hidden" name="listing[menus_attributes][0][menu_sections_attributes][0][menu_items_attributes][0][menu_item_tag_ids][]" value="">
        <div class="form-check">
            <input class="form-check-input is-valid check_boxes optional" type="checkbox" value="1" checked="checked" name="listing[menus_attributes][0][menu_sections_attributes][0][menu_items_attributes][0][menu_item_tag_ids][]" id="listing_menus_attributes_0_menu_sections_attributes_0_menu_items_attributes_0_menu_item_tag_ids_1">
            <label class="collection_check_boxes" for="listing_menus_attributes_0_menu_sections_attributes_0_menu_items_attributes_0_menu_item_tag_ids_1">Vegetarian</label>
        </div>
    </fieldset>

Je dois supprimer la balise sur la deuxième ligne du HTML. label: false semble être la convention évidente, mais cela ne fonctionne pas.

Edit: Il ne s'agit pas d'un doublon de Remove external label from collection_check_boxes . Ils utilisent une fonction différente, sortent du HTML différent et décrivent un problème différent (que tout est enveloppé dans un élément d'étiquette). Et la solution ne corrige ni n'affecte le comportement que je décris.

Edit: Voici une version simplifiée du formulaire en question, en réponse à un commentaire ci-dessous:

    f.association :menu_item_tags, as: :check_boxes


3 commentaires

Ce n'est pas un doublon. Ils utilisent une fonction différente, sortent du HTML différent et décrivent un problème différent (que tout est enveloppé dans un élément d'étiquette).


Pouvez-vous poster plus sur le formulaire. D'après le document, je vois qu'ils ont l'option label: false et label_html: { class: 'hidden' } . Etes-vous sûr d'utiliser <%= simple_form_for @user do |f| %>


Sûr! Je l'ajoute comme deuxième modification ci-dessus.


4 Réponses :


0
votes

Vous pouvez effectuer les opérations suivantes en css:

form[name="your_form_name"]>fieldset>legend {
    display: none;
}

Mais c'est purement cosmétique;)


0 commentaires

2
votes

Vous pouvez éliminer la légende créée par un formulaire simple avec label: ""


0 commentaires

0
votes

Selon la documentation:

label: ''

devrait fonctionner pour masquer l'élément <legend> généré.

J'ai testé cela et j'ai trouvé que cela ne fonctionnait pas.

La solution de contournement que j'ai trouvée efficace était:

label: false

L'élément <legend> sera toujours généré mais il sera vide.


0 commentaires

0
votes

HiðŸ '‹J'espère que cela aide quelqu'un

= f.association :menu_item_tags, as: :check_boxes, legend_tag: false


0 commentaires