diff --git a/app/controllers/spree/api/v2/storefront/slide_locations_controller.rb b/app/controllers/spree/api/v2/storefront/slide_locations_controller.rb new file mode 100644 index 0000000..4c72373 --- /dev/null +++ b/app/controllers/spree/api/v2/storefront/slide_locations_controller.rb @@ -0,0 +1,27 @@ +module Spree + module Api + module V2 + module Storefront + class SlideLocationsController < ::Spree::Api::V2::BaseController + def show + render_serialized_payload { serialize_resource(resource) } + end + + private + + def scope + Spree::SlideLocation + end + + def resource + scope.find(params[:id]) + end + + def resource_serializer + Spree::V2::Storefront::SlideLocationSerializer + end + end + end + end + end +end diff --git a/app/models/spree/slide.rb b/app/models/spree/slide.rb index 92bd691..1b355cd 100644 --- a/app/models/spree/slide.rb +++ b/app/models/spree/slide.rb @@ -1,4 +1,6 @@ class Spree::Slide < ActiveRecord::Base + include Rails.application.routes.url_helpers + has_and_belongs_to_many :slide_locations, class_name: 'Spree::SlideLocation', join_table: 'spree_slide_slide_locations' @@ -47,6 +49,11 @@ def thumbnail image_form(:thumbnail) end + def slide_image_url + # For Api + rails_blob_path(image, only_path: true) + end + private def image_form(form) diff --git a/app/serializers/spree/v2/storefront/slide_location_serializer.rb b/app/serializers/spree/v2/storefront/slide_location_serializer.rb new file mode 100644 index 0000000..bbf9ae8 --- /dev/null +++ b/app/serializers/spree/v2/storefront/slide_location_serializer.rb @@ -0,0 +1,13 @@ +module Spree + module V2 + module Storefront + class SlideLocationSerializer < BaseSerializer + set_type :slide_location + + attributes :name + + has_many :slides + end + end + end +end diff --git a/app/serializers/spree/v2/storefront/slide_serializer.rb b/app/serializers/spree/v2/storefront/slide_serializer.rb new file mode 100644 index 0000000..c9a49de --- /dev/null +++ b/app/serializers/spree/v2/storefront/slide_serializer.rb @@ -0,0 +1,12 @@ +module Spree + module V2 + module Storefront + class SlideSerializer < BaseSerializer + set_type :slide + + attributes :name, :body, :slide_name, :slide_link, :slide_image_url + + end + end + end +end diff --git a/config/routes.rb b/config/routes.rb index f9ea538..d6fd110 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,4 +8,12 @@ resources :slide_locations end + + namespace :api, defaults: { format: 'json' } do + namespace :v2 do + namespace :storefront do + resources :slide_locations, only: [:show] + end + end + end end