【问题标题】:Separate js-code for desktop and mobile visitors in Rails在 Rails 中为桌面和移动访问者分离 js 代码
【发布时间】:2013-10-07 15:01:19
【问题描述】:

我有一个 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-assets 和

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

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

或者有什么更好的建议?

【问题讨论】:

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


    【解决方案1】:

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

    mobile.js:

    //= require sharedjs
    //= require mobilejs
    

    desktop.js:

    //= require sharedjs
    //= require desktopjs
    

    然后在您的 layout 文件中,类似:

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

    【讨论】:

    • 为了进一步组织内容,您可以创建一个包含所有设备特定文件的子文件夹,并像这样要求它们//= require_tree ./desktop
    猜你喜欢
    • 1970-01-01
    • 2012-11-12
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    相关资源
    最近更新 更多