在我们的应用程序中,我们有几个以移动格式提供的页面,但并非所有页面都是。
所以我决定遵循该教程:A Better Way to Add Mobile Pages效果很好。
当用户使用移动设备时,如果移动视图可用,则会呈现移动视图,否则会显示移动视图的桌面版本。
但是我的布局有问题。我的桌面布局和我的移动布局是不同的,所以当移动页面呈现时,我想使用我的移动布局,当显示桌面版本时,即使用户在移动设备上,我也想使用我的桌面布局。 / p>
我将以下代码添加到我的应用程序控制器(我还在此链接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文件夹中。我想检查是否呈现移动视图而不是移动设备,并显示相应的布局。
这可能吗?
非常感谢,
答案 0 :(得分:2)
好的,这就是我最终找到的以及我如何使用设计:
我现在可以在与常规视图相同的文件夹中创建移动视图,如果移动视图不存在,它将回退到常规视图。
以下是您需要完成所有工作的两个链接:
Mobile Format Fallback to default views if mobile view is missing