pokonski/public_activity

View on GitHub
lib/public_activity/utility/view_helpers.rb

Summary

Maintainability
A
0 mins
Test Coverage
# Provides a shortcut from views to the rendering method.
module PublicActivity
  # Module extending ActionView::Base and adding `render_activity` helper.
  module ViewHelpers
    # View helper for rendering an activity, calls {PublicActivity::Activity#render} internally.
    def render_activity activities, options = {}
      if activities.is_a? PublicActivity::Activity
        activities.render self, options
      elsif activities.respond_to?(:map)
        return nil if activities.empty?
        # depend on ORMs to fetch as needed
        # maybe we can support Postgres streaming with this?
        activities.map {|activity| activity.render self, options.dup }.join.html_safe
      end
    end
    alias_method :render_activities, :render_activity

    # Helper for setting content_for in activity partial, needed to
    # flush remains in between partial renders.
    def single_content_for(name, content = nil, &block)
      @view_flow.set(name, ActiveSupport::SafeBuffer.new)
      content_for(name, content, &block)
    end
  end

  ActionView::Base.class_eval { include ViewHelpers }
end