Module: ActiveScaffold::RenderingHelper

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

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.


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


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

def view_stack
  @_view_stack ||= []
end