我一直在Mobile Devices railscast中使用相同的策略,在移动浏览器中为我的网站提供备用布局。
当检测到移动浏览器时,request.format设置为:mobile,我将其定义为mime类型。 我为移动设备创建了一个新的布局。 如果我提供移动视图(例如show.mobile.haml),移动视图和布局都会在移动设备上使用,而且一切都运行良好。
问题是,我不想创建全新的视图,它只是我想要改变的布局。如果我没有创建适当命名的视图,则永远不会使用移动布局。因此,我只能设法在移动设备上同时更改或不更改。
我在这里缺少什么?当我有移动用户时,如何让rails换掉 布局?
答案 0 :(得分:18)
假设您已经从railscast添加了mobile_device?
方法,那么只需将以下内容添加到application_controller.rb:
layout :which_layout
def which_layout
mobile_device? ? 'mobile' : 'application'
end
请务必在app / views / layouts
中创建mobile.html.erb文件由于您想要渲染相同的视图,因此不必担心设置request.format。
答案 1 :(得分:4)
我总是发现将请求的格式从HTML切换到移动设备以违反惯例。它完全滥用了这个工具,所以难怪你遇到了试图保持干燥的问题。
不是切换请求的格式,只需检查给定的请求是否来自移动设备,并根据该设置设置布局。 Bing,bang,boom - done。没有因为别人做的事而无关紧要,你可以重新开始工作。
我发布了代码,但是tybro0103只是用一个链接启动了我。噢啊啊啊!