tessad
tessad

Reputation: 1229

creating mobile version of rails app

I'm trying to work out how to redirect mobile users to other views in my rails app, but I'm missing something as it's not loading the mobile view from my device

in application_controller.rb, I added:

def check_for_mobile
        session[:mobile_override] = params[:mobile] if params[:mobile]
        prepare_for_mobile if mobile_device?
    end

    def prepare_for_mobile
       prepend_view_path Rails.root + 'app' + 'views_mobile'
    end

    def mobile_device?
        if session[:mobile_override]
          session[:mobile_override] == "1"
        else
          # Season this regexp to taste. I prefer to treat iPad as non-mobile.
          (request.user_agent =~ /(iPhone|iPod|Android|webOS|Mobile)/) && (request.user_agent !~ /iPad/)
        end
    end

  helper_method :mobile_device?  

then I have a file app/views/views_mobile/guidelines/index.html.erb

When I go to the index page on my iPhone it doesn't load the mobile index view - I'm not sure which part I'm missing...

Upvotes: 0

Views: 1983

Answers (2)

jshkol
jshkol

Reputation: 1877

Unless you left it out of your code snippet, I don't see where you're calling you're calling your check_for_mobile method. You probably need to add a before_filter to application.rb like:

before_filter :check_for_mobile

I also suggest you check out Ryan Bates Railscast on how to incorporate mobile-specific views into your Rails app. His strategy is similar to what you're trying to achieve, but instead of using a subfolder for your views he solves the same problem very elegantly by creating a 'mobile' MIME type. Check it out here:

http://railscasts.com/episodes/199-mobile-devices?view=asciicast

Upvotes: 0

MorphicPro
MorphicPro

Reputation: 2902

Redirection for this kind of issue is a bad idea. Try responsive design. I would start with twitter bootstrap. This will give you a scaffold system to start with that will adjust to different screen sizes.

Also this is not uniquely a ruby on rails issue. This is a UI design issue.

Here's some good ideas.

  • Dont duplicate your views. it will just be harder to maintain down the road.
  • Use css media queries in your css to adjust your styles.
  • Try not to make two sites but one site that can bend and flex as it needs to.

All that being said I did not answer your specific question but instead tried to show you the way your going about it is wrong so I will understand if you dont mark this as correct.


Responsive resources.

Upvotes: 3

Related Questions