在我们的应用程序中,有几个页面可以在移动设备上使用,但并非所有页面都能。因此,我决定按照这篇教程:A Better Way to Add Mobile Pages 来实现。这个方法很有效。
当用户使用移动设备时,如果移动视图可用,则呈现移动视图;否则显示桌面版本。
然而,我遇到了一个布局问题。我的桌面布局和我的移动布局是不同的,因此当呈现移动页面时,我想使用移动布局,当显示桌面版时,即使用户使用移动设备,我也想使用桌面布局。
我向应用程序控制器添加了以下代码(我还添加了该链接中的代码 A Better Way to Add Mobile Pages ),以检测用户是否为移动设备,并相应地更改布局:
然而,这段代码存在的问题是即使在view_mobiles中没有可用的页面,它也会尝试显示移动布局,因为我正在检查移动设备而不是移动页面。
如何根据呈现的视图确定布局?或者如果视图存在?
我的移动视图位于view_mobiles文件夹中。 我想检查是否呈现了移动视图而不是移动设备,并显示相应的布局。
这可能吗?
非常感谢,
当用户使用移动设备时,如果移动视图可用,则呈现移动视图;否则显示桌面版本。
然而,我遇到了一个布局问题。我的桌面布局和我的移动布局是不同的,因此当呈现移动页面时,我想使用移动布局,当显示桌面版时,即使用户使用移动设备,我也想使用桌面布局。
我向应用程序控制器添加了以下代码(我还添加了该链接中的代码 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文件夹中。 我想检查是否呈现了移动视图而不是移动设备,并显示相应的布局。
这可能吗?
非常感谢,