javascript - 在 Rails 中为桌面和移动访问者分离 js 代码

标签 javascript ruby-on-rails ruby-on-rails-3.2 asset-pipeline

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

我现在开始为移动访问者重新制作某些页面,使用以下方法在 Controller 中检测它们:

def mobile_agent?
  request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(iPhone|iPod|BlackBerry|Android)/]
end 

并为它们提供在内容方面与“桌面” View 完全不同的单独 View 。

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

一种方法可能是跳过加载 js-assets alltogether

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

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

或者有什么更好的建议?

最佳答案

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

mobile.js:

//= require sharedjs
//= require mobilejs

桌面.js:

//= require sharedjs
//= require desktopjs

然后在您的布局文件中,像这样:

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

关于javascript - 在 Rails 中为桌面和移动访问者分离 js 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19228200/

相关文章:

ruby-on-rails - Rails 路径助手在 js.coffee.erb 中不起作用

linux - 无法启动瘦服务器

c# - 在 asp.net 中创建 stackoverflow 类型的文本框,jquery

ruby-on-rails - Rspec:如何创建模拟关联

javascript - Extjs 4 Ext.getBody().mask() - 使这个特殊的掩码透明

ruby-on-rails - 蜻蜓 : cleanup files during tests

ruby-on-rails - 迁移后如何销毁并重新安装 Gem?

ruby-on-rails - 命名空间路由缺失模板错误

Javascript 轮播让我有时点击两次

javascript - 使用 Knockout 和 webapi c# 上传图片