2010-12-10 4 views
4

je bands, genres et bands_genres tables de base de données avec une relation HABTMRails: Comment installer un formulaire avec plusieurs balises select avec une relation HABTM

J'ai une forme pour créer de nouvelles bandes et je veux que les utilisateurs soient en mesure pour sélectionner 3 genres parmi 3 menus déroulants différents.

Comment dois-je configurer mon formulaire (et ma méthode create) de sorte que lorsque l'utilisateur sélectionne ces 3 genres, il ajoute correctement la relation à ma table bands_genres?

Je cours Rails 3.0.3.

Répondre

2

Salut le formulaire doit être similaire à la HABTM par checkboxes Quelque chose comme

<%form_for @band do |f|%> 
    ... 
    <%= select_tag "band[genree_ids][]", options_from_collection_for_select(@first_genrees, "name", "id")%> 
    <%= select_tag "band[genree_ids][]", options_from_collection_for_select(@second_genrees, "name", "id")%> 
    <%= select_tag "band[genree_ids][]", options_from_collection_for_select(@third_genrees, "name", "id")%> 
<%end%> 

après envoi du formulaire relations doivent être changés

+1

Existe-t-il un autre moyen d'écrire ce paramètre "band [genree_ids] []"? Comment cela marche-t-il? –

+0

Existe-t-il un moyen d'utiliser f.select au lieu de select_tag? J'ai essayé mais ça ne marche pas. –

8

Vous pouvez simplifier votre code en ce faisant via 1 sélection qui vous permet de sélectionner plusieurs choix,

<%= collection_select(:band, :genre_ids, Genre.all, :id, :name,{:include_blank => 'None'}, 
{:multiple => true, :name=>'band[genre_ids][]',:selected => 0}) %> 

le: selected => 0, définit la sélection par défaut Aucun

gl

Questions connexes