app/controllers/spree/admin/images_controller.rb in spree_backend-2.4.10 vs app/controllers/spree/admin/images_controller.rb in spree_backend-3.0.0.rc1
- old
+ new
@@ -1,34 +1,50 @@
module Spree
module Admin
class ImagesController < ResourceController
- before_action :load_data
+ before_action :load_edit_data, except: :index
+ before_action :load_index_data, only: :index
create.before :set_viewable
update.before :set_viewable
private
- def location_after_destroy
- admin_product_images_url(@product)
- end
+ def location_after_destroy
+ admin_product_images_url(@product)
+ end
- def location_after_save
- admin_product_images_url(@product)
- end
+ def location_after_save
+ admin_product_images_url(@product)
+ end
- def load_data
- @product = Product.friendly.find(params[:product_id])
- @variants = @product.variants.collect do |variant|
- [variant.sku_and_options_text, variant.id]
- end
- @variants.insert(0, [Spree.t(:all), @product.master.id])
- end
+ def load_index_data
+ @product = Product.friendly.includes(*variant_index_includes).find(params[:product_id])
+ end
- def set_viewable
- @image.viewable_type = 'Spree::Variant'
- @image.viewable_id = params[:image][:viewable_id]
+ def load_edit_data
+ @product = Product.friendly.includes(*variant_edit_includes).find(params[:product_id])
+ @variants = @product.variants.map do |variant|
+ [variant.sku_and_options_text, variant.id]
end
+ @variants.insert(0, [Spree.t(:all), @product.master.id])
+ end
+ def set_viewable
+ @image.viewable_type = 'Spree::Variant'
+ @image.viewable_id = params[:image][:viewable_id]
+ end
+
+ def variant_index_includes
+ [
+ variant_images: [viewable: { option_values: :option_type }]
+ ]
+ end
+
+ def variant_edit_includes
+ [
+ variants_including_master: { option_values: :option_type, images: :viewable }
+ ]
+ end
end
end
end