J'ai actuellement deux modèles: Campagnes et Vidéos. Les vidéos appartiennent à Campaigns et une campagne contient de nombreuses vidéos. Dans mon formulaire de campagne, je souhaite pouvoir ajouter des vidéos qui n'ont pas de parent et également être en mesure de supprimer des vidéos appartenant à la campagne sélectionnée. Je suis venu en utilisant deux listes de sélection multiples distinctes pour cela. Une liste contient toutes les vidéos orphelines et l'autre contient toutes les vidéos appartenant à la campagne sélectionnée. De cette façon, un utilisateur et sélectionnez simplement les vidéos à ajouter et à supprimer. J'ai eu des problèmes en essayant de créer la logique pour ajouter et supprimer des vidéos de la campagne sélectionnée dans mes méthodes "mise à jour" et "créer". J'imagine que d'une manière ou d'une autre je devrais prendre un tableau de chacune des listes de sélection et exécuter une boucle qui ajoute et une boucle qui supprime les vidéos sélectionnées dans chaque formulaire.Comment ajouter et supprimer plusieurs instances "belongs_to" d'une instance "has_many"?
Je vais poster ce que j'ai si loin de ma forme et mes contrôleurs:
Campagnes Controller - Méthode de mise à jour:
def update
if @campaign.update_attributes(params[:campaign])
unless request.xhr?
flash[:notice] = "'#{@campaign.title}' was successfully updated."
else
flash.now[:notice] = "'#{@campaign.title}' was successfully updated."
end
unless from_dialog?
unless params[:continue_editing] =~ /true|on|1/
redirect_to admin_campaigns_url
else
unless request.xhr?
redirect_to :back
else
render :partial => "/shared/message"
end
end
else
render :text => "<script type='text/javascript'>parent.window.location = '\#{admin_campaigns_url}';</script>"
end
else
unless request.xhr?
render :action => 'edit'
else
render :partial => "/shared/admin/error_messages_for", :locals => {:symbol => :campaign, :object => @campaign}
end
end
end
Formulaire de Campagne partielle:
<%= error_messages_for :campaign -%>
<% form_for [:admin, @campaign] do |f| -%>
<div class='field'>
<%= f.label :title -%>
<%= f.text_field :title, :class => 'larger' -%>
</div>
<div class='field'>
<%= f.label :description -%>
<%= f.text_area :description, :rows => 20, :cols => 140, :class => 'wymeditor' -%>
</div>
<div class='field'>
<%= f.label :date -%>
<%= f.date_select :date -%>
</div>
<div class='field'>
<%= f.label :videos_in, "Add Videos" -%>
<%= f.collection_select(:title, @orphanedVideos, :id, :title, {}, {:multiple => true}) -%>
</div>
<div class='field'>
<%= f.label :videos_out, "Remove Videos" -%>
<%= f.collection_select(:title, @campaignVideos, :id, :title, {}, {:multiple => true}) -%>
</div>
<div class='field'>
<%= f.label :preview -%>
<%= render :partial => "/shared/admin/image_picker", :locals => {
:f => f,
:field => :preview_id,
:image => @campaign.preview,
:toggle_image_display => false
} %>
</div>
<%= render :partial => "/shared/admin/form_actions", :locals => {:f => f, :continue_editing => false} %>
<% end -%>
Je Je ne sais pas si les collection_select sont configurés correctement (bien qu'ils s'affichent correctement sur le formulaire). Tout pointeur serait apprécié.
Merci de votre visite!
Pour c larify, quelles sont vos listes déroulantes