2009-03-07 4 views
9

Quelle est la manière correcte de créer des cases à cocher liées à une certaine question dans Ruby on Rails? En ce moment j'ai:Cases à cocher sur les rails

<div class="form_row"> 
    <label for="features[]">Features:</label> 
    <br><%= check_box_tag 'features[]', 'scenarios' %> Scenarios 
    <br><%= check_box_tag 'features[]', 'role_profiles' %> Role profiles 
    <br><%= check_box_tag 'features[]', 'private_messages' %> Private messages 
    <br><%= check_box_tag 'features[]', 'chatrooms' %> Chatrooms 
    <br><%= check_box_tag 'features[]', 'forums' %> Forums 
    <br><%= check_box_tag 'features[]', 'news' %> News 
    <br><%= check_box_tag 'features[]', 'polls' %> Polls 
</div> 

Je veux aussi être en mesure de vérifier automatiquement les éléments précédemment sélectionnés (si ce formulaire a été rechargées). Comment est-ce que je chargerais les params dans la valeur par défaut de ceux-ci?

Répondre

14

Vous êtes à la recherche à l'adresse suivante:

<div class="form_row"> 
    <label for="features[]">Features:</label> 
    <% [ 'scenarios', 'role_profiles', ... , 'polls' ].each do |feature| %> 
     <br><%= check_box_tag 'features[]', feature, 
       (params[:features] || {}).include?(feature) %> 
     <%= feature.humanize %> 
    <% end %> 
</div> 

Bien que si vous avez déjà un modèle Feature, avec une table features et une relation has_many :features, vous voulez sans doute ceci:

<div class="form_row"> 
    <label for="feature_ids[]">Features:</label> 
    <% for feature in Feature.find(:all) do %> 
     <br><%= check_box_tag 'feature_ids[]', feature.id, 
       @model.feature_ids.include?(feature.id) %> 
     <%= feature.name.humanize %> 
    <% end %> 
</div> 
+0

variable locale non définie ou méthode 'features 'pour # alamodey

+0

Eh bien, quel modèle a l'association de caractéristiques, et dans quelle variable est-il stocké? @article? @produit? :) – vladr

+0

En fait, pourquoi ne pas poster le code entier pour votre vue _et_ action (à partir du contrôleur) _et_ modèles pertinents? – vladr

Questions connexes