Module: ActiveScaffold::RenderingHelper

Defined in:
lib/active_scaffold/extensions/action_view_rendering.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#render(*args, &block) ⇒ Object

Adds two rendering options.

render :super

This syntax skips all template overrides and goes directly to the provided ActiveScaffold templates. Useful if you want to wrap an existing template. Just call super!

render :active_scaffold => #ActiveScaffold::RenderingHelper.controllercontroller.to_s, options = {}+

Lets you embed an ActiveScaffold by referencing the controller where it's configured.

You may specify options for the embedded scaffold. These constraints have three effects:

* the scaffold's only displays records matching the constraint
* all new records created will be assigned the constrained values
* constrained columns will be hidden (they're pretty boring at this point)

You may also specify options for the embedded scaffold. These only do 1/3 of what constraints do (they only limit search results). Any format accepted by ActiveRecord::Base.find is valid.

Defining options lets you completely customize the list title for the embedded scaffold.

options force to load embedded scaffold with AJAX even when render_component gem is installed.

[View source]

38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/active_scaffold/extensions/action_view_rendering.rb', line 38

def render(*args, &block)
  if args.first.is_a?(Hash) && args.first[:active_scaffold]
    render_embedded args.first
  elsif args.first == :super
    if @lookup_context # rails 6
      @_lookup_context ||= lookup_context
    else # rails < 6
      @_view_paths ||= lookup_context.view_paths.clone
      @_last_template ||= lookup_context.last_template
    end
    result = super options_for_render_super(args[1])
    @lookup_context = @_lookup_context if @_lookup_context # rails 6
    lookup_context.view_paths = @_view_paths if @_view_paths # rails < 6
    lookup_context.last_template = @_last_template if @_last_template # rails < 6
    result
  else
    if @lookup_context # rails 6
      @_lookup_context ||= lookup_context
    else # rails < 6
      @_view_paths ||= lookup_context.view_paths.clone
    end
    last_template = lookup_context.last_template
    current_view =
      if args[0].is_a?(Hash)
        {locals: args[0][:locals], object: args[0][:object]}
      else # call is render 'partial', locals_hash
        {locals: args[1]}
      end
    view_stack << current_view if current_view
    @lookup_context = @_lookup_context if @_lookup_context # rails 6, reset lookup_context in case a view render :super, and then render :partial
    lookup_context.view_paths = @_view_paths if @_view_paths # rails < 6, reset view_paths in case a view render :super, and then render :partial
    result = super
    view_stack.pop if current_view.present?
    lookup_context.last_template = last_template
    result
  end
end

#view_stackObject

[View source]

76
77
78
# File 'lib/active_scaffold/extensions/action_view_rendering.rb', line 76

def view_stack
  @_view_stack ||= []
end