创建rails app的移动版本

时间:2013-05-21 00:09:16

标签: ruby-on-rails-3

我正在尝试制定如何将移动用户重定向到我的rails应用中的其他视图,但我遗漏了一些内容,因为它没有从我的设备加载移动视图

在application_controller.rb中,我添加了:

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?  

然后我有一个文件app / views / views_mobile / guidelines / index.html.erb

当我进入iPhone上的索引页面时,它没有加载移动索引视图 - 我不确定哪个部分我错过了...

2 个答案:

答案 0 :(得分:3)

此类问题的重定向是一个坏主意。尝试响应式设计。我会从twitter bootstrap开始。这将为您提供一个支架系统,它将根据不同的屏幕尺寸进行调整。

这也不是唯一的ruby on rails问题。这是一个UI设计问题。

这是一些好主意。

  • 不要复制您的观点。维持下去将更加困难。
  • 在css中使用css媒体查询来调整样式。
  • 尽量不要制作两个网站,而是一个可以根据需要弯曲和弯曲的网站。

所有这一切都说我没有回答你的具体问题,而是试图告诉你你的方式是错误的,所以如果你不认为这是正确的我会理解。


响应资源。

答案 1 :(得分:0)

除非您将其从代码段中删除,否则我无法看到您打电话给您的位置并且正在调用您的check_for_mobile方法。您可能需要在application.rb中添加一个before_filter,如:

before_filter :check_for_mobile

我还建议您查看Ryan Bates Railscast,了解如何将特定于移动设备的视图合并到您的Rails应用程序中。他的策略与您尝试实现的策略相似,但不是使用子文件夹来实现您的观点,而是通过创建“移动”来非常优雅地解决同样的问题。 MIME类型。在这里查看:

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