Javascript Rails中桌面和移动访问者的单独js代码

Javascript Rails中桌面和移动访问者的单独js代码,javascript,ruby-on-rails,ruby-on-rails-3.2,asset-pipeline,Javascript,Ruby On Rails,Ruby On Rails 3.2,Asset Pipeline,我有一个Rails应用程序,在app/assets/javascripts文件夹中,有50个左右的js函数组织在单独的文件中 我现在开始为移动访问者重新制作某些页面,并通过以下方法在控制器中检测它们: def mobile_agent? request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(iPhone|iPod|BlackBerry|Android)/] end 并为他们提供独立的视图,这些

我有一个Rails应用程序,在app/assets/javascripts文件夹中,有50个左右的js函数组织在单独的文件中

我现在开始为移动访问者重新制作某些页面,并通过以下方法在控制器中检测它们:

def mobile_agent?
  request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(iPhone|iPod|BlackBerry|Android)/]
end 
并为他们提供独立的视图,这些视图在内容方面与“桌面”视图完全不同

我不希望桌面访问者使用的javascript文件(及其代码)为移动访问者加载,反之亦然

一种方法可以是跳过加载js资产,并将其与

<%= javascript_include_tag "application" unless mobile_agent? %>

但是我应该把我的移动js文件放在哪里呢


或者有更好的建议吗?

您可以拥有任意数量的清单文件。只要将它们放入/app/assets/javascripts中,它们就会自动编译。你可以有:

mobile.js:

//= require sharedjs
//= require mobilejs
//= require sharedjs
//= require desktopjs
desktop.js:

//= require sharedjs
//= require mobilejs
//= require sharedjs
//= require desktopjs
然后在布局文件中,类似于:

<%= javascript_include_tag "mobile" if mobile_agent? %>
<%= javascript_include_tag "desktop" unless mobile_agent? %>

为了进一步组织内容,您可以创建一个子文件夹,其中包含所有特定于设备的文件,并需要这些文件,如所示
/=require\u tree./desktop