Module: Innate::Helper::Render

Included in:
Nagoro::Pipe::RenderPartial
Defined in:
/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/render.rb

Class Method Summary (collapse)

Instance Method Summary (collapse)

Class Method Details

+ (Object) included(into)

Enables you to simply call:

Examples:

of added functionality

YourController.render_partial(:foo, :x => 42)


8
9
10
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/render.rb', line 8

def self.included(into)
  into.extend(self)
end

Instance Method Details

- (Object) render_custom(action_name, variables = {}) {|action| ... }

Yields:

  • (action)

Author:

  • manveru



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/render.rb', line 139

def render_custom(action_name, variables = {})
  unless action = resolve(action_name.to_s, :needs_method => false)
    raise(ArgumentError, "No Action %p on #{self}" % [action_name])
  end

  action.sync_variables(self.action)
  action.instance = action.node.new
  action.variables = action.variables.merge(variables)

  yield(action) if block_given?

  valid_action = action.view || action.method
  Log.warn("Empty action: %p" % [action]) unless valid_action
  action.render
end

- (Object) render_file(filename, variables = {}) {|action| ... }

Use the given file as a template and render it in the same scope as the current action. The +filename+ may be an absolute path or relative to the process working directory.

Ramaze will emit a warning if you try to render an Action without a method or view template, but will still try to render it. The usual Action#valid? doesn't apply here, as sometimes you just cannot have a method associated with a template.

Examples:

usage


path = '/home/manveru/example/app/todo/view/index.xhtml'
render_file(path)
render_file(path, :title => :foo)

Yields:

  • (action)

See Also:

  • render_custom

Author:

  • manveru



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/render.rb', line 121

def render_file(filename, variables = {})
  action = Action.create(:view => filename)
  action.sync_variables(self.action)

  action.node      = self.class
  action.engine    = self.action.engine
  action.instance  = action.node.new
  action.variables.merge!(variables)

  yield(action) if block_given?

  valid_action = action.view || action.method
  Log.warn("Empty action: %p" % [action]) unless valid_action
  action.render
end

- (Object) render_full(path, query = {})

Renders the full action in the way a real request would.

Please be aware that, if this is the first request from a client, you will not have access to the session in the action being rendered, as no actual session has been put into place yet.

It should work as expected on any subsequent requests.

As usual, patches welcome.

Please note that you have to give the full path in the same way you'd do in a direct request with curl or a browser.

Examples:

usage


render_full('/blog/article/1')
render_full('/blog/article/1', :lang => :de)

See Also:

Author:

  • manveru



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/render.rb', line 33

def render_full(path, query = {})
  uri       = URI(path.to_s)
  uri.query = Rack::Utils.build_query(query)
  saved     = request, response, session, actions

  if cookie = request.env['HTTP_COOKIE']
    Mock.session do |mock|
      mock.cookie = cookie
      return mock.get(uri.to_s).body
    end
  else
    Mock.get(uri.to_s).body
  end
ensure
  self.request, self.response, self.session, self.actions = saved
end

- (Object) render_partial(action_name, variables = {})

Renders an action without any layout. You can further tweak the action to be rendered by passing a block.

Please note that you only have to supply the action name, if your action requires arguments then you have to pass a name suitable for that.

Examples:

usage


render_partial(:index)
render_partial(:index, :title => :foo)

usage with action that requires arguments


# requires two arguments
def foo(a, b)
end

# pass two suitable arguments
render_partial('foo/1/2')

See Also:

  • render_custom

Author:

  • manveru



74
75
76
77
78
79
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/render.rb', line 74

def render_partial(action_name, variables = {})
  render_custom(action_name, variables) do |action|
    action.layout = nil
    yield(action) if block_given?
  end
end

- (Object) render_view(action_name, variables = {})

Renders an action view and does not execute any methods. The rendered view will not be wrapped in a layout and instead will use the layout of the current action. You can further tweak the action to be rendered by passing a block.

Examples:

usage


render_view(:index)
render_view(:index, :title => :foo)

See Also:

  • render_custom

Author:

  • manveru



94
95
96
97
98
99
100
# File '/home/manveru/github/ramaze/ramaze.net/tmp/git/innate/lib/innate/helper/render.rb', line 94

def render_view(action_name, variables = {})
  render_custom(action_name, variables) do |action|
    action.layout = nil
    action.method = nil
    yield(action) if block_given?
  end
end