2017-06-20 3 views
0

Der Versuch, hochgeladene Bilder zu entfernen, mit carrierwaveEntfernen Bilder hochgeladen Schienen 4 carrierwave

<%= f.fields_for :images do |ff| %> 
    <div class="form-group"> 
     <label> 
     <%= ff.check_box :remove_image %> 
      <%= image_tag ff.object.image %> 
     </label> 
     </div> 
<% end %> 

Erste solche params in Controller

"images_attributes"=>{"0"=>{"remove_image"=>"0", "id"=>"13"}, "1"=>{"remove_image"=>"1", "id"=>"14"}, "2"=>{"remove_image"=>"0", "id"=>"15"}, "3"=>{"remove_image"=>"0", "id"=>"16"}, "4"=>{"remove_image"=>"0", "id"=>"17"}, "5"=>{"remove_image"=>"0", "id"=>"18"}}} 

Aber wenn ein Objekt mit diesen params Aktualisierung nichts passiert, was ich vermisst ?

Update

def update 
    @country = Country.find(params[:id]) 

    if @country.update(country_params) 
     flash[:notice] = 'Country is successfully updated.' 
     redirect_to edit_admin_country_path 
    else 
     flash[:error] = @country.errors.full_messages[0] 
     render 'edit' 
    end 
    end 

    def country_params 
    permitted = [{images_attributes: ["image", "@original_filename", "@content_type", "@headers", "_destroy", "id", "remove_image"]}] 
    params.require(:country).permit(*permitted) 
    end 

class Country < ActiveRecord::Base 
    has_many :images 
    .... 
end 

class Image < ActiveRecord::Base 

    mount_uploader :image, ImageUploader 
    belongs_to :country 
end 
+0

Gibt es einen Controller, wo Sie sehen können, wie versuchen Sie, solche Bilder zu entfernen? –

+0

teilen Sie bitte auch Ihr Modal. –

+0

mein Beitrag aktualisiert –

Antwort

1

Ihr Formular sieht gut aus, aber Sie vermissen die Controller-Aktion

Mine wie folgt aussieht:

class ImageController < ApplicationController 
    ... 
    def update 
    @image = Image.find(params[:id]) 
    ... 
    if params[:images][:remove_image].present? 
     @image.remove_image! 
    end 
    @image.save 
    end 
end 

Wenn Sie die Datei manuell entfernen möchten Sie können remove_avatar! aufrufen und das Objekt speichern.

+0

Land hat viele Bilder, nicht nur eine –

+0

Ich wollte alle Bilder auf einmal zu entfernen, ich habe kein Problem Schleifen und Löschen, hoffte ich könnte einen eleganteren Weg finden –

+0

Vielen Dank für Ihre Hilfe trotzdem! –

Verwandte Themen