Sha256: e3f2d6204c4f4b631dac42c0d108270d520b3b2c2baf7d6bbe90e250dc28bba8

Contents?: true

Size: 1.19 KB

Versions: 11

Compression:

Stored size: 1.19 KB

Contents

# encoding: utf-8

module Rango
  module MessageMixin
    # The rails-style flash messages
    # @since 0.0.2
    # NOTE: it's important to include this mixin after ImplicitRendering mixin
    def self.included(controller)
      # How to determine
      # respond to not, it's a class
      # if controller.instance_methods.include?(:locals)
      controller.class_eval do
        def locals
          @locals ||= super.merge!(message: self.message)
        end
      end
    end

    def message
      @message ||= (request.GET[:msg] || Hash.new)
    end

    # @since 0.0.2
    def redirect(url, options = Hash.new)
      url = [self.request.base_url.chomp("/"), url].join("/").chomp("/") unless url.match(/^http/)

      if options.respond_to?(:inject)
        # redirect "/post", error: "Try again"
        # ?msg[error]="Try again"
        url = options.inject(url) do |url, pair|
          type, message = pair
          url + "?msg[#{type}]=#{message}"
        end
      else
        # redirect "/post", "Try again"
        # ?msg="Try again"
        url.concat("?msg=#{options}")
      end

      self.status = 302
      self.headers["Location"] = URI.escape(url)
      return String.new
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rango-0.1.1.2.10 lib/rango/mixins/message.rb
rango-0.1.1.2.9 lib/rango/mixins/message.rb
rango-0.1.1.2.8 lib/rango/mixins/message.rb
rango-0.1.1.2.7 lib/rango/mixins/message.rb
rango-0.1.1.2.6 lib/rango/mixins/message.rb
rango-0.1.1.2.5 lib/rango/mixins/message.rb
rango-0.1.1.2.4 lib/rango/mixins/message.rb
rango-0.1.1.2.3 lib/rango/mixins/message.rb
rango-0.1.1.2.2 lib/rango/mixins/message.rb
rango-0.1.1.2.1 lib/rango/mixins/message.rb
rango-0.1.1.2 lib/rango/mixins/message.rb