Thanks for the feedback. No my problem was that I didn't (/realize I had to) 
set the MIME type for "mobile" in config/initializers/mime_types.rb

Mime::Type.register_alias "text/html", :mobile

That's what I was missing -- I'm sure of it cause it worked fine after I set 
that correctly. 

If the error message from Rails said "You didn't set a MIME type in 
config/initializers/mime_types.rb for the format :mobile" that would be more 
helpful. It makes perfect sense-- I just didn't realize that was a necessary 
step. 



On May 23, 2011, at 4:08 PM, Alpha Blue wrote:

> request.format = :mobile if request.user_agent =~ /Mobile|webOS|iPhone/



On May 23, 2011, at 2:51 PM, Kendall Gifford wrote:

> On Saturday, May 21, 2011 12:24:27 PM UTC-6, Jason FB wrote:
> I have a strange problem with setting request.format = :mobile 
> 
> I can reproduce this problem on a completely fresh Rails 3.0.7 app 
> with no special gems. This seemed to work well in Rails 2 but for some 
> reason is hiccuping here, not sure what's different in Rails 3 that 
> makes this hiccup. If you look at the stack track, it doesn't even 
> pass through my app stack once -- weird -- maybe this is a problem 
> with Passenger? Anyone see anything i'm doing wrong here? Your tips 
> are much appreciated, this is baffling me. 
> 
> Step-by-step instructions to reproduce: 
> 
> Totally fresh rails app (rails new test_mobile), then go delete public/ 
> index.html 
> 
> routes.rb __________________________________ 
> 
> TestMobile::Application.routes.draw do 
>   root :to => "application#welcome" 
> end 
> 
> application_controller.rb __________________________ 
> 
> class ApplicationController < ActionController::Base 
>   protect_from_forgery 
> 
>   def welcome 
>     render "welcome/index" 
>   end 
> 
>   before_filter :check_mobile 
> 
>   def check_mobile 
>     request.format = :mobile if request.env["HTTP_USER_AGENT"] =~ / 
> iPhone/ 
>   end 
> end 
> 
> 
> 
> views/welcome/index.html.erb ______________________________________ 
> 
> this is my regular site 
> 
> 
> 
> 
> views/welcome/index.mobile.erb ____________________________________ 
> 
> this is my mobile site 
> 
> 
> 
> 
> That's it -- those are all the steps one needs to take to reproduce 
> this, no gem configuration necessary. 
> 
> Set it up with Passenger (as test-mobile.local), go to Safrai, load 
> test-mobile.local, you get "this is my regular site". Then switch 
> Develop > User Agent to "Safari iOS 4.1", reload the page, and bam: 
> 
> 
> NoMethodError in ApplicationsController#welcome 
> 
> Hmm, are you sure that your routes.rb file contains the singular form 
> "application#welcome" and not "applications#welcome" (note the "s" on 
> "applications"). What does "rake routes" return?
> 
> It looks to me like your :root route is mapping to "applications#welcome" 
> (plural) as if you've got: root :to => "applications#welcome"
> 
> The only way to know if it is the routing is to have a rake routes dump.
>  
> 
> undefined method `ref' for nil:NilClass 
> Rails.root: /Users/jason/Projects/DEVELOPMENT/ROR/test_mobile 
> 
> Application Trace | Framework Trace | Full Trace 
> activesupport (3.0.7) lib/active_support/whiny_nil.rb:48:in 
> `method_missing' 
> actionpack (3.0.7) lib/action_controller/metal/rendering.rb:10:in 
> `process_action' 
> actionpack (3.0.7) lib/action_controller/metal/rendering.rb:10:in 
> `map' 
> actionpack (3.0.7) lib/action_controller/metal/rendering.rb:10:in 
> `process_action' 
> actionpack (3.0.7) lib/abstract_controller/callbacks.rb:18:in 
> `process_action' 
> activesupport (3.0.7) lib/active_support/callbacks.rb:441:in 
> `_run__2115867319__process_action__733682996__callbacks' 
> activesupport (3.0.7) lib/active_support/callbacks.rb:410:in `send' 
> activesupport (3.0.7) lib/active_support/callbacks.rb:410:in 
> `_run_process_action_callbacks' 
> activesupport (3.0.7) lib/active_support/callbacks.rb:94:in `send' 
> activesupport (3.0.7) lib/active_support/callbacks.rb:94:in 
> `run_callbacks' 
> actionpack (3.0.7) lib/abstract_controller/callbacks.rb:17:in 
> `process_action' 
> actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb: 
> 30:in `process_action' 
> activesupport (3.0.7) lib/active_support/notifications.rb:52:in 
> `instrument' 
> activesupport (3.0.7) lib/active_support/notifications/instrumenter.rb: 
> 21:in `instrument' 
> activesupport (3.0.7) lib/active_support/notifications.rb:52:in 
> `instrument' 
> actionpack (3.0.7) lib/action_controller/metal/instrumentation.rb: 
> 29:in `process_action' 
> actionpack (3.0.7) lib/action_controller/metal/rescue.rb:17:in 
> `process_action' 
> actionpack (3.0.7) lib/abstract_controller/base.rb:119:in `process' 
> actionpack (3.0.7) lib/abstract_controller/rendering.rb:41:in 
> `process' 
> actionpack (3.0.7) lib/action_controller/metal.rb:138:in `dispatch' 
> actionpack (3.0.7) lib/action_controller/metal/rack_delegation.rb: 
> 14:in `dispatch' 
> actionpack (3.0.7) lib/action_controller/metal.rb:178 
> actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:62:in 
> `call' 
> actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:62:in 
> `dispatch' 
> actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:27:in 
> `call' 
> rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:in `call' 
> rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in 
> `recognize' 
> rack-mount (0.6.14) lib/rack/mount/code_generation.rb:68:in 
> `optimized_each' 
> rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in 
> `recognize' 
> rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:in `call' 
> actionpack (3.0.7) lib/action_dispatch/routing/route_set.rb:493:in 
> `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/ 
> best_standards_support.rb:17:in `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/head.rb:14:in `call' 
> rack (1.2.2) lib/rack/methodoverride.rb:24:in `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/params_parser.rb: 
> 21:in `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/flash.rb:182:in 
> `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/session/ 
> abstract_store.rb:149:in `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/cookies.rb:302:in 
> `call' 
> activerecord (3.0.7) lib/active_record/query_cache.rb:32:in `call' 
> activerecord (3.0.7) lib/active_record/connection_adapters/abstract/ 
> query_cache.rb:28:in `cache' 
> activerecord (3.0.7) lib/active_record/query_cache.rb:12:in `cache' 
> activerecord (3.0.7) lib/active_record/query_cache.rb:31:in `call' 
> activerecord (3.0.7) lib/active_record/connection_adapters/abstract/ 
> connection_pool.rb:354:in `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/callbacks.rb:46:in 
> `call' 
> activesupport (3.0.7) lib/active_support/callbacks.rb:416:in 
> `_run_call_callbacks' 
> actionpack (3.0.7) lib/action_dispatch/middleware/callbacks.rb:44:in 
> `call' 
> rack (1.2.2) lib/rack/sendfile.rb:107:in `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/remote_ip.rb:48:in 
> `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/show_exceptions.rb: 
> 47:in `call' 
> railties (3.0.7) lib/rails/rack/logger.rb:13:in `call' 
> rack (1.2.2) lib/rack/runtime.rb:17:in `call' 
> activesupport (3.0.7) lib/active_support/cache/strategy/local_cache.rb: 
> 72:in `call' 
> rack (1.2.2) lib/rack/lock.rb:11:in `call' 
> rack (1.2.2) lib/rack/lock.rb:11:in `synchronize' 
> rack (1.2.2) lib/rack/lock.rb:11:in `call' 
> actionpack (3.0.7) lib/action_dispatch/middleware/static.rb:30:in 
> `call' 
> railties (3.0.7) lib/rails/application.rb:168:in `call' 
> railties (3.0.7) lib/rails/application.rb:77:in `send' 
> railties (3.0.7) lib/rails/application.rb:77:in `method_missing' 
> passenger (2.2.10) lib/phusion_passenger/rack/request_handler.rb:92:in 
> `process_request' 
> passenger (2.2.10) lib/phusion_passenger/abstract_request_handler.rb: 
> 207:in `main_loop' 
> passenger (2.2.10) lib/phusion_passenger/rack/application_spawner.rb: 
> 118:in `run' 
> passenger (2.2.10) lib/phusion_passenger/rack/application_spawner.rb: 
> 65:in `spawn_application' 
> passenger (2.2.10) lib/phusion_passenger/utils.rb:184:in `safe_fork' 
> passenger (2.2.10) lib/phusion_passenger/rack/application_spawner.rb: 
> 58:in `spawn_application' 
> passenger (2.2.10) lib/phusion_passenger/rack/application_spawner.rb: 
> 41:in `spawn_application' 
> passenger (2.2.10) lib/phusion_passenger/spawn_manager.rb:159:in 
> `spawn_application' 
> passenger (2.2.10) lib/phusion_passenger/spawn_manager.rb:287:in 
> `handle_spawn_application' 
> passenger (2.2.10) lib/phusion_passenger/abstract_server.rb:352:in 
> `__send__' 
> passenger (2.2.10) lib/phusion_passenger/abstract_server.rb:352:in 
> `main_loop' 
> passenger (2.2.10) lib/phusion_passenger/abstract_server.rb:196:in 
> `start_synchronously' 
> passenger (2.2.10) bin/passenger-spawn-server:61 
> Request 
> 
> Parameters: 
> 
> {"format"=>"mobile"} 
> Show session dump 
> 
> Show env dump 
> 
> Response 
> 
> Headers: 
> 
> None 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to