Rendering Inline SVG - Here's how.. But why?

Well, I got rails to render my inline SVG code in an rhtml file (parsed by ERb) in Firefox using the rest pattern. I thought all of this would work without the “after_filter” but for some reason, without it it doesn’t work. I have no idea why its needed! Can anyone explain?

Here’s how I got it to work…:

Environment.rb:
Add the following:
Mime::Type.register “application/xhtml+xml”, :svg

location_controller.rb (Or whatever your restful controller is!)
def index
@locations = Location.find(:all)
respond_to do |format|
format.html # index.rhtml
format.xml { render :xml => @locations.to_xml }
format.svg { render :action => "
svg.rhtml", :layout => false }
end
end

also add:

after_filter :set_content_type
def set_content_type
if ( @request.env[‘HTTP_ACCEPT’].match(/application/xhtml+xml/))
@headers[‘Content-Type’] = “application/xhtml+xml; charset=utf-8”
end
end

Now create a file called svg.rhml in your views folder and paste the following:

SVG within XHTML Demo

You can embed SVG into XHTML, provided that your browser natively implements SVG. E.g. Firefox 1.5 supports most of static SVG.

The SVG part starts below


HELLO cher visiteur
The SVG part ended above

Voila! It works… Now why do I need the before filter!

Thanks :stuck_out_tongue_winking_eye:
-RR