Hi, everyone, this is my first post here! I have a "HomeController" that has an "index" method. I have 4 views for this method: - index.html.erb - index.mobile_lofi.erb - index.mobile_hifi.erb - index.iphone.erb I also have the following mimetypes defined: Mime::Type.register_alias "text/html", :mobile_lofi Mime::Type.register_alias "text/html", :mobile_hifi Mime::Type.register_alias "text/html", :iphone Now, the content (instance variables) these views need is almost the same among them. I have a method "device_type?" that returns one of the [:html, :mobile_lofi, :mobile_hifi, :iphone] based on the User-Agent string. How do I render the view based on the result of the "device_type?" method? I am using Rails 2.3.3. Thank you, Gleb -- Posted via http://www.ruby-forum.com/.
Gleb Mazovetskiy wrote:> Hi, everyone, this is my first post here! > > I have a "HomeController" that has an "index" method. > > I have 4 views for this method: > - index.html.erb > - index.mobile_lofi.erb > - index.mobile_hifi.erb > - index.iphone.erb > > I also have the following mimetypes defined: > Mime::Type.register_alias "text/html", :mobile_lofi > Mime::Type.register_alias "text/html", :mobile_hifi > Mime::Type.register_alias "text/html", :iphone > > Now, the content (instance variables) these views need is almost the > same among them. > > I have a method "device_type?" that returns one of the [:html, > :mobile_lofi, :mobile_hifi, :iphone] based on the User-Agent string. > > How do I render the view based on the result of the "device_type?" > method? > I am using Rails 2.3.3. > > Thank you, > GlebGleb, I am not sure, but i would think along these line def index format = device_type? respond_to do |format| format.html format.mobile_lofi { render blah} format.iphone { render :action => blah } end end Cheers Craigslist Clone in Rails http://www.classifiedscript.in -- Posted via http://www.ruby-forum.com/.
On Wed, Aug 19, 2009 at 1:01 AM, Rails List<rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:>> How do I render the view based on the result of the "device_type?" >> method? >> I am using Rails 2.3.3. >> >> Thank you, >> Gleb > > Gleb, I am not sure, but i would think along these line > > def index > format = device_type? > respond_to do |format| > format.html > format.mobile_lofi { render blah} > format.iphone { render :action => blah } > end > endClose, but I think you need to set request.format, and I''d probably do that in a before filter. class HomeController < ApplicationController before_filter :set_device_mime_type def set_device_mime_type request.format = device_type? end def index respond_to do |format| #what you said end end end I''d also strongly suggest renaming that device_type? method to something like device_mime_type since the question mark indicates that it should be a predicate method. It might also be a good idea to refactor this a bit so that you only change the format of the request if it is coming from one of the special devices, and leave it to what the client sent otherwise. -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Twitter: http://twitter.com/RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale