Best way to force a respond_to format

I am playing around with the idea of adding to the HTTP_ACCEPT header method and trying to utilize WURFL for detecting mobile devices by USER_AGENT instead. I'm thinking I will set up some kind of before_filter in my controller, to intercept all requests and compare the USER_AGENT to some data source.

If I detect that the USER_AGENT is a mobile device, then I'd like to force a particular mime-type and format. If I can't find it, then I may just fall through to the typical ACCEPT header.

I'm wondering what others thoughts are on the best way to do this.

I have found that I can simply set the params[:format] to what I want.

such as:

before_filter :typecheck def typecheck   somelogic...   params[:format] = "xhtmlmp"   or...   params[:format] = "wml" end

Then in my view, I will have a respond_to block something like.

respond_to do |format|   format.html   format.xml { :render :xml => @object.to_xml }   format.xhtmlmp { render :template => 'object/xhtmlmp-index',                                       :layout => 'xhtmlmp' }   format.wml { render :template => 'object/wml-index',                                 :layout => 'wml' } end

I see I could also just set the request.env["HTTP_ACCEPT"] parameter to the appropriate mime-type that will give me the correct format as well.

Anyone have any suggestions? Do you think this idea makes any sense?

Thanks for any tips or hints.