0

我正在尝试解决如何将移动用户重定向到我的 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 上的索引页面时,它不会加载移动索引视图 - 我不确定我缺少哪个部分...

4

2 回答 2

3

对此类问题进行重定向是一个坏主意。尝试响应式设计。我将从 twitter 引导程序开始。这将为您提供一个可以适应不同屏幕尺寸的脚手架系统。

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

这里有一些好主意。

  • 不要重复你的观点。以后会更难维护。
  • 在您的 css 中使用 css 媒体查询来调整您的样式。
  • 尽量不要做两个站点,而是一个可以根据需要弯曲和弯曲的站点。

话虽如此,我并没有回答您的具体问题,而是试图向您展示您的做法是错误的,因此如果您不将其标记为正确,我会理解的。


响应资源。

于 2013-05-21T00:23:22.603 回答
0

除非你把它放在你的代码片段之外,否则我看不到你在哪里调用你的check_for_mobile方法。您可能需要将 before_filter 添加到 application.rb 中,例如:

before_filter :check_for_mobile

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

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

于 2013-05-21T00:38:42.577 回答