Sha256: 8f9e7dd3949e99be182b69bfbcab845550b2a8081d1ebcea983ab717486294d3

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

require "dejavu/version"

module Dejavu
  module ViewHelpers
    def has_dejavu?(obj)
      obj_name = ActiveRecord::Base === obj ? obj.class.model_name.underscore : obj.to_s
      !!flash[:"saved_#{obj_name}_for_redisplay"]
    end

    def get_dejavu_for(obj)
      is_instance = ActiveRecord::Base === obj
      model_name = is_instance ? obj.class.model_name.underscore : obj.to_s

      if has_dejavu?(obj)
        foo = if is_instance
                obj.attributes = flash[:"saved_#{model_name}_for_redisplay"]
                obj
              else
                obj.to_s.classify.constantize.new flash[:"saved_#{model_name}_for_redisplay"]
              end
        foo.valid?
        foo
      else
        is_instance ? obj : obj.to_s.classify.constantize.new
      end
    end
  end

  module ControllerMethods
    def save_for_dejavu(obj)
      flash[:"saved_#{obj.class.model_name.underscore}_for_redisplay"] = obj.attributes
    end
  end
end

ActionController::Base.send(:include, Dejavu::ControllerMethods)
ActionView::Base.send(:include, Dejavu::ViewHelpers)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dejavu-0.1.0 lib/dejavu.rb