module Spyro::ActionViewExtension::CollectionForHelper

Public Instance Methods

collection_for(collection, options = {}) click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 386
      def collection_for collection, options = {}, &block
        parser = nil

        Parser::Base.types.each do |klass_collection, klass_parser|
          parser = klass_parser.new collection, self, options if collection.is_a? klass_collection
        end

        return if parser.nil?

        output = "Spyro::ActionViewExtension::CollectionForHelper::Output::#{(options[:output] || :table).to_s.classify}".constantize

        if block_given?
          block.call parser
        end

        parser.parse
#        p parser.unicollection

        output.new(parser.unicollection, self, parser.class).render
      end
sortable_header(header) click to toggle source
# File lib/spyro/helpers/action_view_extension.rb, line 409
def sortable_header header
  if controller.ordered_keys.include? header
    params_dup = params.dup
    default_sort = controller.ordered_keys.first
    sort = params_dup.delete :sort
    rev_sort = params_dup.delete :rev_sort
    css_class = ''

    if sort
      css_class = "sort" if sort.to_sym == header.to_sym
    elsif rev_sort
      css_class = "sort rev" if rev_sort.to_sym == header.to_sym
    elsif default_sort.to_sym == header.to_sym
      css_class = "sort#{controller.ordered_options[:default] == :desc ? ' rev' : ''}"
    end

    params_dup[:rev_sort] = params_dup[:sort] = nil
    if css_class == "sort"
      params_dup[:rev_sort] = header
    else
      params_dup[:sort] = header
    end

    link_to header.to_s.humanize, url_for(params_dup), class: css_class
  else
    header.to_s.humanize
  end
end