require_dependency "pages_cms/application_controller" module PagesCms class Admin::ImagesController < ApplicationController before_action :logged_in_admin before_action :selected_account def index @images = current_account.images @image = current_account.images.build end def create if params[:image][:is_url] image = current_account.images.build(image_params) if image.save flash[:success] = 'Successfully uploaded file.' redirect_to admin_images_path else flash[:danger] = 'Failed to create file' redirect_to admin_images_path end else validate_image = Image.new(image_params) if validate_image.validate_file_type(params[:image][:file]) user_named = params[:image][:name] uploaded_io = params[:image][:file] extension = uploaded_io.original_filename.split('.')[1] name = "#{Time.now.to_i}_#{user_named}.#{extension}" @image = current_account.images.build(file: "/images/#{name}", name: user_named) if @image.save File.open(Rails.root.join('public', 'images', name), 'wb') do |file| file.write(uploaded_io.read) end if File.exists?(Rails.root.join('public', 'images', name)) flash[:success] = 'Successfully uploaded file.' redirect_to admin_images_path else @image.destroy flash[:danger] = 'Failed to create file' redirect_to admin_images_path end else flash[:danger] = "Error: #{@image.errors.full_messages.to_sentence}" redirect_to admin_images_path end else flash[:danger] = "Error #{validate_image.errors.full_messages.to_sentence}" redirect_to admin_images_path end end end def destroy image = Image.find(params[:id]) image.destroy FileUtils.rm(Rails.root.join('public', 'images', image.file)) flash[:success] = 'Image deleted' redirect_to admin_images_path end private def image_params params.require(:image).permit(:file, :name) end end end