Class Index [+]

Quicksearch

Ramaze::Helper::Stack

Provides an call/answer mechanism, this is useful for example in a login-system.

It is basically good to redirect temporarly somewhere else without forgetting where you come from and offering a nice way to get back to the last urls.

Example:

class AuthController < Controller

  helper :stack

  def login pass
    if pass == 'password'
      session[:logged_in] = true
      answer '/'
    else
      "failed"
    end
  end

  def logged_in?
    !!session[:logged_in]
  end

end

class ImportantController < Controller

  helper :stack

  def secret_information
    call :login unless logged_in?
    "Agent X is assigned to fight the RubyNinjas"
  end

end

Public Instance Methods

answer(alternative = nil) click to toggle source

return to the last location on session[:STACK] The optional alternative paramter will be used to redirect in case you are not inside_stack? If the session has no stack and no alternative is given this won’t do anything

    # File lib/ramaze/helper/stack.rb, line 61
61:       def answer(alternative = nil)
62:         if inside_stack?
63:           stack = session[:STACK]
64:           target = stack.pop
65:           session.delete(:STACK) if stack.empty?
66:           redirect(target)
67:         elsif alternative
68:           redirect(alternative)
69:         end
70:       end
call(this) click to toggle source
    # File lib/ramaze/helper/stack.rb, line 49
49:       def call(this)
50:         push(request.fullpath)
51:         redirect(this)
52:       end
inside_stack?() click to toggle source

check if the stack has something inside.

    # File lib/ramaze/helper/stack.rb, line 73
73:       def inside_stack?
74:         session[:STACK] and session[:STACK].any?
75:       end
push(frame) click to toggle source

redirect to another location and pushing the current location on the session[:STACK]

    # File lib/ramaze/helper/stack.rb, line 45
45:       def push(frame)
46:         (session[:STACK] ||= []) << frame
47:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.