Module: Ramaze::Helper::Layout::SingletonMethods

Defined in:
lib/ramaze/helper/layout.rb

Instance Method Summary collapse

Instance Method Details

#set_layout(hash_or_layout) ⇒ Object

The set_layout method allows you to specify a number of methods and their layout. This allows you to use layout A for methods 1, 2 and 3 but layout B for method 4.

Examples:

# The key is the layout, the value an array of methods
set_layout 'default' => [:method_1], 'alternative' => [:method_2]

# We can combine this method with layout()
layout 'default'
set_layout 'alternative' => [:method_1]

# This is also perfectly fine
set_layout 'default'

Author:

  • Yorick Peterse

  • Michael Fellinger

  • Pistos

Since:

  • 2011-04-07



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/ramaze/helper/layout.rb', line 89

def set_layout(hash_or_layout)
  @_ramaze_layouts    ||= {}
  @_ramaze_old_layout ||= trait[:layout]

  # Extract the layout to use
  if hash_or_layout.respond_to?(:to_hash)
    # Invert the method/layout hash and save them so they don't get lost
    hash_or_layout.to_hash.each do |layout, layout_methods|
      layout_methods.each do |layout_method|
        @_ramaze_layouts[layout_method.to_s] = layout.to_s
      end
    end

    layout do |path, wish|
      path = path.to_s

      if @_ramaze_layouts.key?(path)
        use_layout = @_ramaze_layouts[path.to_s]
      # Use the old layout
      elsif @_ramaze_old_layout.respond_to?(:call)
        use_layout = @_ramaze_old_layout.call(path, wish)
      else
        use_layout = @_ramaze_old_layout
      end

      use_layout
    end
  else
    layout { |path| hash_or_layout }
  end
end

#set_layout_except(hash_or_layout) ⇒ Object

Deprecated.

because it’s not longer useful



122
123
124
# File 'lib/ramaze/helper/layout.rb', line 122

def set_layout_except(hash_or_layout)
  Ramaze.deprecated('set_layout_except', 'set_layout')
end