コントローラにデストロイメソッドを追加します。
記述追加 app\controllers\photos_controller.rb(17行目)
def destroy @photo = Photo.find(params[:id]) @room = @photo.room @photo.destroy @photos = Photo.where(room_id: @room.id) respond_to :js end
app\controllers\photos_controller.rb
class PhotosController < ApplicationController def create @room = Room.find(params[:room_id]) if params[:images] params[:images].each do |img| @room.photos.create(image: img) end @photos = @room.photos redirect_back(fallback_location: request.referer, notice: "保存しました。") end end def destroy @photo = Photo.find(params[:id]) @room = @photo.room @photo.destroy @photos = Photo.where(room_id: @room.id) respond_to :js end end
「app\views\photos」フォルダに「destroy.js.erb」ファイルを新規作成します。
app\views\photos\destroy.js.erb
写真を削除するとチェックマークも消えるようにしています。
$('#photos').html("<%= j render 'photos_list' %>") <% if @room.photos.blank? %> $('#photo_check').hide(); <% end %> <% if !@room.active && !@room.price.blank? && !@room.listing_name.blank? && !@room.photos.blank? && !@room.address.blank? %> $('#publish_button').attr('disabled', false); <% else %> $('#publish_button').attr('disabled', true); <% end %>
ブラウザ確認
写真が削除できるのを確認して下さい。
確認するには一度「rooms」テーブルの「active」をnullにする必要があります。
http://localhost:3000/rooms/1/photo_upload