2009-09-24 5 views
1

Est-il possible d'utiliser les champs select avec la fonction nested object forms de Rails 2.3?Utilisation d'un champ de sélection avec des formulaires d'objets imbriqués Rails

Exemple:

Supposons que vous ayez un modèle de l'article, le modèle de catégorie, et un modèle ArticleCategories rejoindre. Article has_many Catégories through ArticleCatégories.

Sur notre formulaire Modifier l'article, vous souhaitez avoir une liste HTML de toutes les catégories disponibles. L'utilisateur peut sélectionner un ou plusieurs noms de catégories à attribuer à l'article (la sélection multiple est activée).

Il existe de nombreuses façons de le faire, mais je me demande s'il existe un moyen simple d'y parvenir en utilisant la fonction d'objets imbriqués. À quoi ressemblerait la forme à votre avis?

Répondre

2

Découvrez l'exemple de emboîtées de Github:

http://github.com/alloy/complex-form-examples

Il a été un moment que je l'ai regardé, donc je ne suis pas sûr si elle couvre exactement ce que vous voulez faire, mais son un belle source d'idées/motifs.

1

En supposant que vous avez défini les modèles et leurs relations afin que vous puissiez le faire:

@art = Article.find(article_id) 
@art.categories # returns list of category objects this article is assigned to. 

Puis-je utiliser habituellement http://trendwork.kmf.de/175

Vous devez copier le fichier JavaScript dans public/javascripts, mais après que vous peut simplement créer l'élément de forme avec quelque chose comme:

swapselect(:article,@art,:categories,Category.find(:all).map { |cat| [cat.name, cat.id] }) 

(je aurais tendance à envelopper que dans une aide pour effectuer l'appel même plus propre)

Un petit Gotcha est que pour des listes très longues, il peut courir un peu lent dans IE6 parce qu'il ya pas mal de appendChild appelle dans les js qui est notorioulsy lent dans IE6

Mise à jour: Toutes mes excuses. Cela ne répond pas vraiment à votre question initiale, qui concernait spécifiquement la fonctionnalité Rails 2.3. L'option swapselect est indépendante de la version et n'utilise pas les nouvelles fonctionnalités de Rails.

+0

swapselect est sympa. Je l'ai utilisé dans un autre projet. – jaaronfarr

+0

swapselect est également disponible ici: http://trac6.assembla.com/ve_designer_portal/browser/trunk/public/javascripts/swapselect.js – gparis

Questions connexes