Association Simple_Form avec has_many: via un champ supplémentaire
J'ai deux modèles, les Développeurs et les Tâches,
class Developer < ActiveRecord::Base
attr_accessible :address, :comment, :email, :name, :nit, :phone, :web
has_many :assignments
has_many :tasks, :through => :assignments
end
class Task < ActiveRecord::Base
attr_accessible :description, :name, :sprint_id, :developer_ids
has_many :assignments
has_many :developers, :through => :assignments
end
class Assignment < ActiveRecord::Base
attr_accessible :accomplished_time, :developer_id, :estimated_time, :status, :task_id
belongs_to :task
belongs_to :developer
end
im prenant soin de la relation par l'ajout d'un tableau d'Affectation, de sorte que je peux ajouter de nombreux développeurs à une tâche en particulier, maintenant je voudrais être capable de manipuler les autres domaines, j'ai ajouté à la jonction de table comme le "estimated_time', 'accomplished_time'... etc... ce que j'ai obtenu sur mon Simple_form est
`
<%= simple_form_for [@sprint,@task], :html => { :class => 'form-horizontal' } do |f| %>
<%= f.input :name %>
<%= f.input :description %>
<%= f.association :developers, :as => :check_boxes %>
<div class="form-actions">
<%= f.button :submit, :class => 'btn-primary' %>
<%= link_to t('.cancel', :default => t("helpers.links.cancel")),
project_sprint_path(@sprint.project_id,@sprint), :class => 'btn' %>
</div>
<% end %>`
Cela ne me permet de sélectionner les développeurs, je veux être en mesure de modifier la estimated_time champ à droite.
Des Suggestions?
source d'informationauteur Gaspar Tovar
Vous devez vous connecter pour publier un commentaire.
J'aime la façon simple-forme a l'association aides, qui rend vraiment facile dans certains cas. Malheureusement, ce que vous voulez, vous ne pouvez pas résoudre avec de simples-forme.
Vous aurez à créer
assignments
pour que cela fonctionne.Il y a deux approches possibles.
Pour les deux, vous devrez ajouter la ligne suivante à votre modèle:
Notez que si vous utilisez
attr_accesible
vous devez également ajouterassignments_attributes
.L'approche facile
Supposons que vous savez comment de nombreuses missions, au maximum, un
task
aurait. Supposons que 1 pour des raisons de simplicité.Dans votre contrôleur, écrire
Ce sera assurez-vous que il ya une nouvelle affectation.
De votre point de vue écriture:
Le problème avec cette approche: si vous souhaitez plus de 1, 2 ou 3?
Utilisation cocon
Cocoon est un bijou qui vous permet de créer des dynamiques des formulaires imbriqués.
Votre vue devient:
Et de définir une partielle
_assignment_fields.html.haml
:Espère que cette aide.
Le truc c'est que en utilisant ce:
Vous êtes en fait qu'réglage de la developer_ids attribut, qui va automatiquement créer les affectations pour vous comme il a beaucoup de :grâce à. Pour cela, je crois que vous devriez être en utilisant des attributs, pour chacune des missions, et de chaque enregistrement aurait une boîte de sélection ou similaire à choisir la relative développeur pour cette affectation dans cette tâche. C'est assez similaire à ce que Cojones a répondu, mais vous ne devriez pas être à l'aide de cases à cocher de cette association, car vous allez être face à une affectation unique qui contient un seul développeur. Et avec imbriqué attributs, vous devriez être en mesure de créer beaucoup de tâches que vous voulez.
Qui, je crois, est le moyen le plus facile pour commencer.
Je pense qu'il devrait regarder en quelque sorte comme ceci: