Как удалить актив в nested_form через carrierwave? - PullRequest
2 голосов
/ 31 марта 2012

Добрый день. Есть ли у кого-нибудь работающее решение для удаления актива во вложенной форме в Carrierwave?

MODEL

has_many :article_images, :dependent => :destroy    
accepts_nested_attributes_for :article_images

mount_uploader :image, ImageUploader    
belongs_to :article, :polymorphic => true

schema.rb

create_table "article_images", :force => true do |t|
t.string "image"
t.string "article_id"
end

create_table "articles", :force => true do |t|
t.string "title"
end

CONTROLLER

def edit
@article = Article.find(params[:id])
@article.article_images.build
end

VIEW

_form.html.erb
<%= f.fields_for :article_images do |article_image| %>
<% if article_image.object.new_record? %>
<%= article_image.file_field :image %>
<% else %>
<%= image_tag(article_image.object.image.url(:thumb)) %>
<%= article_image.check_box :remove_image %> #DON'T WORK
<% end %>
<% end %>

Ответы [ 2 ]

4 голосов
/ 19 августа 2013

Я думаю, что лучше, если вы сделаете это:

class ArticleImage < ActiveRecord::Base
  # ...
  attr_accessible :remove_image
  after_save :clean_remove_image

  def changed?
    !!(super || remove_image)
  end

  def clean_remove_image
    self.remove_image = nil
  end
end

Это сработало для меня.

2 голосов
/ 01 апреля 2012

Что произойдет, если вы добавите это в вашу accepts_nested_attributes_for в вашей модели:

accepts_nested_attributes_for :article_images, :allow_destroy => true

и измените это в своем коде просмотра:

<%= article_image.check_box :remove_image %> #DON'T WORK

К этому:

<%= article_image.check_box :_destroy %> #MIGHT WORK?
...