method

default_render

Importance_3
Ruby on Rails latest stable (v2.3.4) - 4 notes - Class: ActionController::Base
default_render(#:nodoc:) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Show source
Register or log in to add new notes.
November 4, 2008
2 thanks

RE: 1 render definition for many actions (cleaner)

Hi James,

Unfortunately that doesn’t work if you use the

  @zombies

variable in the rendered template, which is why default_render was added as a patch AFAIK. :)

before_filter is called too soon, after_filter is called after an attempt at rendering is made, so default_render is the only option for this as far as I know.

November 4, 2008 - (v1.0.0 - v2.1.0)
1 thank

1 render definition for many actions (cleaner)

@arronwashington, you can just call render rather then using instance_eval to overwrite default_render, for example:

  before_filter :render_filter, :only => [:zombies, :cool_zombies]

  def zombies
    @zombies = Zombie.find(:all)
  end

  def cool_zombies
    @zombies = Zombie.find(:all, :conditions => { :eats_humans => false, :is_hippie => true })
  end

  protected

  def render_filter
    # without instance_eval or overwriting default_render
    render :template => 'zombies/all'
  end
November 4, 2008
0 thanks

1 render definition for many actions.

Overriding default_render in especially useful when you have many actions that all render the same thing.

  before_filter :render_filter, :only => [:zombies, :cool_zombies]

  def zombies
    @zombies = Zombie.find(:all)
  end

  def cool_zombies
    @zombies = Zombie.find(:all, :conditions => { :eats_humans => false, :is_hippie => true })
  end

  protected

  def render_filter
    instance_eval do
      def default_render
        render :template => 'zombies/all'
      end
    end
  end
November 5, 2008
0 thanks

RERE: 1 render definition for many actions (cleaner)

@arronwashington. Ah, so that’s the motivation for using default_render, thanks for clearing that up, thanks :)