2010-06-17 5 views
2

En ce moment, je suis en train de créer une application de gestion de projet, et je suis bloqué sur la façon dont je devrais construire ce formulaire. Au moment de l'ajout d'un projet, je voudrais sélectionner les clients qui seraient inclus dans le projet. Voici le code à quelques choses d'intérêt:Formulaires complexes dans les rails (has_and_belongs_to_many)

Modèle Projet Projet Migration clients Modèle clients Migration Clients_Projects table de migration

http://pastebin.com/280MjR8i

Quelle serait la meilleure approche sur la construction du contrôleur/Voir jusqu'à présent, j'ai ceci pour la vue, mais je n'ai aucune idée, ce qui devrait être la prise sur le contrôleur ->

http://pastebin.com/dHa8nAQZ

Répondre

6

J'utiliserais des attributs imbriqués pour cela. Découvrez le railcast de Ryan Bates http://railscasts.com/episodes/196-nested-model-form-part-1 et http://railscasts.com/episodes/197-nested-model-form-part-2.

Vous pouvez ajouter et supprimer des clients pour un projet à l'aide de cette méthode. L'utilisation d'une liste de cases à cocher pour sélectionner des clients peut poser problème à un grand nombre de clients.

+0

Merci beaucoup, ces screencasts a sauvé ma vie :) – Gotjosh

2

Dans votre contrôleur, vous devez indiquer à .permit que la liste des ids est un tableau:

def client_params 
    params[:client].permit(
    :name, 
    :address, 
    :phone, 
    {:project_ids => []} 
), 
end 

Puis les Rails magiques fonctionnera.

source: https://coderwall.com/p/_1oejq

+0

brillant! Simple et facile! –

+2

les '{}' ne sont pas requis, au moins dans les rails 4 juste: project_ids => [] fonctionne –

Questions connexes