Sha256: c83050b4fb99d031086c6a6651031da209440434ee7072507fefe5c0475c6e02

Contents?: true

Size: 1.88 KB

Versions: 15

Compression:

Stored size: 1.88 KB

Contents

module TrkDatatables
  module Generators
    class TrkDatatablesGenerator < Rails::Generators::NamedBase
      # we can call with `rails g trk_datatables` instead of: `rails g trk_datatables:trk_datatables`
      namespace 'trk_datatables'
      source_root File.expand_path('../templates', __dir__)

      desc 'Generates datatables file for a give NAME'
      def create
        begin
          class_name.constantize
          @trk_class_name = "#{class_name.pluralize}Datatable"
          @trk_file_name = "#{plural_name}_datatable"
        rescue NameError => e
          Rails.logger.info e.message
          @skip_model = true
          @trk_class_name = "#{class_name}Datatable"
          @trk_file_name = "#{singular_name}_datatable"
        end

        template 'trk_datatable.rb', "app/datatables/#{@trk_file_name}.rb"

        say <<~TEXT
          ======================================================================
          You can use in your controller

          # app/controllers/#{plural_name}_controller.rb
          class #{class_name.pluralize}Controller < ApplicationController
            def index
              @datatable = #{@trk_class_name}.new view_context
            end

            def search
              render json: #{@trk_class_name}.new(view_context)
            end
          end

          In your views mkdir app/views/#{plural_name}
          # app/views/#{plural_name}/index.html.erb
          <h1>#{class_name.pluralize}</h1>
          <%= @datatable.render_html search_#{plural_name}_path(format: :json) %>

          And in routes

          # config/routes.rb
          Rails.application.routes.draw do
            resources :#{plural_name} do
              collection do
                post :search
              end
            end
          end
          ======================================================================
        TEXT
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
trk_datatables-0.2.15 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.14 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.13 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.12 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.11 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.10 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.9 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.8 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.7 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.6 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.5 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.4 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.3 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.2 lib/generators/trk_datatables/trk_datatables_generator.rb
trk_datatables-0.2.1 lib/generators/trk_datatables/trk_datatables_generator.rb