在移动设备上使用备用Rails布局,但视图相同

时间:2011-08-13 02:59:17

标签: ruby-on-rails layout mobile views

我一直在Mobile Devices railscast中使用相同的策略,在移动浏览器中为我的网站提供备用布局。

当检测到移动浏览器时,request.format设置为:mobile,我将其定义为mime类型。 我为移动设备创建了一个新的布局。 如果我提供移动视图(例如show.mobile.haml),移动视图和布局都会在移动设备上使用,而且一切都运行良好。

问题是,我不想创建全新的视图,它只是我想要改变的布局。如果我没有创建适当命名的视图,则永远不会使用移动布局。因此,我只能设法在移动设备上同时更改或不更改。

我在这里缺少什么?当我有移动用户时,如何让rails换掉 布局?

2 个答案:

答案 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只是用一个链接启动了我。噢啊啊啊!