Sha256: 50c8d564db6be5feacd1c2d298671c1199d3cd84c09bc7f827b90a035ce7510d

Contents?: true

Size: 1.66 KB

Versions: 8

Compression:

Stored size: 1.66 KB

Contents

module RailsSitemap
  class PagesController < ApplicationController
    include RailsSitemap::ActAsSitemap

    EXCLUDED_CONTROLLERS = ['rails/info', nil, 'errors', 'rails/mailers']
    EXCLUDED_ACTIONS = %w(show destroy update edit new create)
    EXCLUDED_PATHS = %w(/)

    before_action :set_routes, only: :index
    before_action :set_custom_paths, only: :index

    def index
      respond_to do |format|
        format.xml
      end
    end

    private

    def set_routes
      @routes = Rails.application.routes.routes.map do |route|
        { alias: route.name,
          path: route.path.spec.to_s,
          controller: route.defaults[:controller],
          action: route.defaults[:action] }
      end

      @routes.reject! do |route|
        EXCLUDED_CONTROLLERS.include?(route[:controller])
      end

      @routes.reject! do |route|
        EXCLUDED_ACTIONS.include?(route[:action])
      end

      @routes.reject! do |route|
        EXCLUDED_PATHS.include?(route[:path])
      end

      @sitemap_entries = @routes.map do|route|
        SitemapEntry.new(route[:path][0..-11])
      end
    end

    def set_custom_paths
      RailsSitemap.models_for_sitemap.each do |model_sitemap|
        model_class = model_sitemap.constantize

        model_class.all.each do |object|
          id = object.try(:slug) || object.id

          object_path = "/#{model_sitemap.underscore.pluralize}/#{id}"
          last_modification = object.updated_at.to_datetime.to_s
          object_priority = RailsSitemap.priority

          @sitemap_entries <<
            SitemapEntry.new(object_path, object_priority, last_modification)
        end
      end

      @sitemap_entries.uniq
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rails_sitemap-0.3.2 app/controllers/rails_sitemap/pages_controller.rb
rails_sitemap-0.3.1 app/controllers/rails_sitemap/pages_controller.rb
rails_sitemap-0.3.0 app/controllers/rails_sitemap/pages_controller.rb
rails_sitemap-0.2.5 app/controllers/rails_sitemap/pages_controller.rb
rails_sitemap-0.2.4 app/controllers/rails_sitemap/pages_controller.rb
rails_sitemap-0.2.3 app/controllers/rails_sitemap/pages_controller.rb
rails_sitemap-0.2.2 app/controllers/rails_sitemap/pages_controller.rb
rails_sitemap-0.2.1 app/controllers/rails_sitemap/pages_controller.rb