Прежде всего, когда вы создаете check_box в form_for (который выглядит так, как вы), то форма должна по умолчанию отправлять: image_delete как "1", если отмечено, и "0", если не отмечено Объявление метода выглядит так:
def check_box(method, options = {}, checked_value = "1", unchecked_value = "0")
Показывает, что вы можете назначать другие значения, если хотите, но это, конечно, необязательно.
Во-вторых, вызов для удаления вложения вручную без удаления экземпляра модели, к которому он прикреплен, является:
@page.image.destroy #Will remove the attachment and save the model
@page.image.clear #Will queue the attachment to be deleted
И чтобы ваш способ удаления изображений был установлен через флажок, возможно, добавьте что-то подобное в модель страницы:
class Page < ActiveRecord::Base
has_attached_file :image
before_save :destroy_image?
def image_delete
@image_delete ||= "0"
end
def image_delete=(value)
@image_delete = value
end
private
def destroy_image?
self.image.clear if @image_delete == "1"
end
end
Таким образом, когда вы создаете форму и добавляете флажок: image_delete, он загружает значение по умолчанию «0» из экземпляра пользователя. И если это поле отмечено, контроллер обновит image_delete до «1», и когда пользователь будет сохранен, он проверит, удаляется ли изображение.