У меня сейчас две модели: Кампании и Видео. Видео принадлежит кампаниям, а в кампании есть много видеороликов. В моей форме «Кампания» я хочу иметь возможность добавлять видео, у которых нет родителя, а также удалять видео, принадлежащие выбранной кампании. Для этого я придумал два отдельных списка выбора. В одном списке есть все осиротевшие видео, а у другого есть все видео, принадлежащие выбранной кампании. Таким образом, пользователь и просто выберите, какие видео добавлять и удалять. У меня возникли проблемы при попытке создать логику добавления и удаления видео из выбранной кампании в моих методах «обновления» и «создания». Я предполагаю, что каким-то образом мне нужно будет взять массив из каждого списка выбора и запустить цикл, который добавляет, и цикл, который удаляет выбранные видео в каждой форме.Как добавить и удалить несколько экземпляров «belongs_to» в экземпляр «has_many» и из него?
Я вывешу то, что я так далеко от моей формы и моих контроллеров:
Кампании Controller - метод Update: Форма
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
кампании Частичное:
<%= 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 -%>
Я m не уверен, что setup_select настроен правильно (хотя они правильно отображают форму). Любые указатели будут оценены.
Спасибо, что посмотрели!
К c larify, каковы ваши