Удаление изображений с помощью скрепки - PullRequest
0 голосов
/ 01 июня 2011

Я пытаюсь удалить каждое отдельное изображение, загруженное для модели (в работе много изображений), но теперь мой код работает следующим образом: у меня в работе загружено три изображения, я хочу удалить только одно, но когда я проверяюУстановите флажок для изображения и отправьте действие обновления, чтобы удалить все три изображения.

Вот код моей рабочей модели:

  before_save :destroy_image?

  belongs_to :category
  has_many :images, :as => :assetable, :class_name => "Work::Image", :dependent =>    :destroy

  accepts_nested_attributes_for :images, :reject_if => proc { |attributes| attributes['attachment'].blank? }

  def image_delete
    @image_delete ||= "0"
  end

 def image_delete=(value)
   @image_delete = value
 end

private
   def destroy_image?
    self.images.clear if @image_delete == "1"
   end


end


class Work::Image < Asset
   has_attached_file :attachment, :styles => {:small => "200x150>", :large =>    "400x300>"},
:url  => "/uploads/works/:id/:style/:basename.:extension",
:path => ":rails_root/public/uploads/works/:id/:style/:basename.:extension"

end

Я думаю, что проблема заключается в том, что удаляются все изображения

self.images.clear if @image_delete == "1"

но я не понимаю, как это исправить.Я надеюсь на вашу помощь.

1 Ответ

1 голос
/ 01 июня 2011

Вместо этого вы должны использовать :allow_destroy опции accepts_nested_attributes_for.

И в вашей форме что-то вроде этого:

<% @work.images.each do |image| %>
  <%= f.fields_for :images, image do |image_fields| %>
    <%= image_tag image.url(:small) %>
    <%= image_fields.check_box :_destroy %>
  <% end %>
<% end %>
...