Sha256: 241d290302a3a48d0072be005c1368f0d643c2c67a0dcf25f51f9dc735f7eb7a

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

module Cmor::Seo
  class ItemsController < Cmor::Core::Backend::ResourcesController::Base
    include Rao::ResourcesController::ActsAsPublishedConcern

    def self.resource_class
      Cmor::Seo::Item
    end

    module AutocompleteConcern
      extend ActiveSupport::Concern

      def autocomplete_resource
        resource_class_name = params[:resource_class_name]
        term                = params[:term] || ''
        resource_class      = resource_class_name.constantize

        autocomplete_options = autocomplete_options_for(resource_class_name)

        if autocomplete_options.present?
          resources = autocomplete_options[:scope].call(term).all

          results = resources.collect do |resource|
            { id: resource.send(autocomplete_options[:id_method]), text: resource.send(autocomplete_options[:text_method]) }
          end
        else
          results = []
        end

        respond_to do |format|
          format.json do
            render json: { results: results }
          end
        end
      end

      private

      def autocomplete_options_for(resource_class_name)
        Cmor::Seo::Configuration.items_resource_autocomplete_options[resource_class_name]
      end
    end

    include AutocompleteConcern

    private

    def load_collection_scope
      super.eager_load(:meta_tags)
    end

    def permitted_params
      params.require(:item).permit(:resource_type, :resource_id, :path, :published, meta_tags_attributes: [:id, :name, :content, :published, :_destroy])
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cmor_seo-0.0.40.pre app/controllers/cmor/seo/items_controller.rb