Never write a render_foo method again
I’ve probably written a hundred render_not_found methods in my life as a Rails dev. Usually they just render a static file under /public, and maybe, if I’m feeling nice, give an XML response. No more!
class ApplicationController < ActionController::Base
protected
ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE.each do |symbol, code|
define_method "render_#{symbol}" do |*args|
respond_to do |format|
format.html{render_error_html_file(code, (args.first || {}))}
format.all{head symbol}
end
end
end
def render_error_html_file code, options={}
render options.reverse_merge(
:file => File.join(RAILS_ROOT, 'public', "#{code}.html"),
:layout => false,
:status => code
)
end
This will give you every render_* method you’ve ever wanted, including the ever-useful render_im_used