2014-02-17 3 views
1

Я хочу, чтобы иметь возможность удалять изображения в моей форме редактирования с помощью formtastic в Active_admin. Есть много сообщений об этом, но по какой-то причине я не могу заставить его соответствовать моей настройке.Удалить скрепки изображений Active Admin

У меня есть Post модели и NewsImages модели, которая держит изображения для каждого поста:

class Post < ActiveRecord::Base 

    has_many :news_images, dependent: :destroy 
    accepts_nested_attributes_for :news_images, allow_destroy: true 

end 


class NewsImage < ActiveRecord::Base 
    belongs_to :post 
    has_attached_file :photo 

end 

Так от того, что я прочитал флаг может быть добавлен к моей NewsImage модели, и иметь, прежде чем сохранить метод, удалит это изображение. Я предполагаю, что он будет выглядеть так, но он не удалит изображение при нажатии на флажок.

#/admin/post.rb 
    f.has_many :news_images do |p| 
    if p.object.new_record? 
     p.input :photo, as: :file 
    else 
    p.input :photo, as: :file, :hint => p.template.image_tag(p.object.photo.url(:thumb)) 
    p.input :remove_image, as: :boolean, required: :false, label: 'Remove image' 

    end 
    end 

Что-то я заметил в консоли на данном этапе при нажатии и из флажком его значение не изменится на зарегистрированный или незарегистрированный ... это предполагается?

NewsImage модель теперь выглядит как

class NewsImage < ActiveRecord::Base 
    before_save :remove_photo 
    belongs_to :post 

    private 

    def remove_photo 
    self.photo.destroy if self.remove_image == '1' 
    end 

end 

Есть ли что-нибудь здесь, что каждый может видеть, что вызвало бы это не работать, или же кто-то есть решение для такого рода установки?

Любая помощь приветствуется

ответ

6

Надеюсь, это поможет кому-то в том же положении. Вам не нужно создавать специальный метод для удаления изображений здесь, вы просто использовать это в форме

p.input :_destroy, as: :boolean, required: :false, label: 'Remove image' 

и в контроллере (permit_params) проходят

:_destroy 

в пределах ваших вложенных атрибутов, например

permit_params :title, :content, :news_category_id, :author, 
      news_images_attributes: [:id, :photo, :post_id, :_destroy] 
+0

Я получаю неизвестный атрибут: _destroy – buddy

+0

Вы добавили '_destroy' в свои разрешенные параметры? вы используете рельсы 3 или 4? – Richlewis

+2

Я использую рельсы 3. Я получил его работу с использованием attr_accessor и attr_accessible в модели. – buddy