【问题标题】:Separate Mobile Views and Layout for mobile pages移动页面的单独移动视图和布局
【发布时间】:2014-02-27 09:45:31
【问题描述】:

在我们的应用程序中,我们有几个页面以移动格式提供,但并非所有页面都提供。

所以我决定按照那个教程:A Better Way to Add Mobile Pages 效果很好。

当用户使用移动设备时,如果移动视图可用,则呈现移动视图,否则将显示桌面版本。

但是我的布局有问题。我的桌面布局和我的移动布局是不同的,所以当呈现移动页面时,我想使用我的移动布局,当显示桌面版本时,我想使用我的桌面布局,即使用户在移动设备上。

我将以下代码添加到我的应用程序控制器(我还在此链接A Better Way to Add Mobile Pages 中添加了代码)以检测用户是否移动并相应地更改布局:

layout :determine_layout

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?

def determine_layout
  if mobile_device?
    "mobile"
  else
    "application"
  end
end

但是,此代码的问题在于,即使该页面在 view_mobiles 中不可用,它也会尝试显示移动布局,因为我正在检查移动设备而不是移动页面。

如何根据呈现的视图确定布局?或者如果视图存在?

我的移动视图位于 view_mobiles 文件夹中。我想检查是否渲染了移动视图而不是移动设备并显示了相应的布局。

这可能吗?

非常感谢,

【问题讨论】:

  • 你找到解决办法了吗?
  • 是的,我会在几分钟内发布答案

标签: ruby-on-rails mobile


【解决方案1】:

好的,这就是我最终找到的以及我如何使用设计:

我现在可以在与常规视图相同的文件夹中创建移动视图,如果移动视图不存在,它将回退到常规视图。

这是让一切正常运行所需的两个链接:

Mobile Format Fallback to default views if mobile view is missing

Device Mobile Fallback

【讨论】:

  • 感谢您发布此信息!
  • 那么您是通过请求格式完成的,还是对变体采用示例?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
相关资源
最近更新 更多