【问题标题】:Is there a "Rails Way" include a jQuery plugin in the Asset Pipeline?是否有“Rails Way”在资产管道中包含 jQuery 插件?
【发布时间】:2013-02-06 20:19:01
【问题描述】:

许多 jQuery 插件具有以下目录结构:

/<plugin name>
../css
../images
../js

CSS 文件通常具有指向其中图像的相对链接。我想要做的是将这些插件包含在资产管道下的Rails Way 中,并且希望这不需要重命名文件引用以删除相关链接。有这样的 Rails 方式吗?

在资产管道中包含一个已经缩小的 jQuery 插件是不是也有点矫枉过正?

【问题讨论】:

  • 使用//= require_tree ./[plugin_name] 来要求所有目录和插件怎么样?

标签: ruby-on-rails-3 jquery-plugins ruby-on-rails-3.2 asset-pipeline


【解决方案1】:

据我所知,您应该尝试将资产添加到加载路径中,这是推荐的方式。如果您正在运行的应用程序激活了 assets-pipeline,它应该在扩展 application.rb 中的路径后找到您的资产

config.assets.paths << Rails.root.join("plugins/plugin_name/assets/")

不舒尔,如果这是您要求的,但如果不是,您应该检查:http://guides.rubyonrails.org/asset_pipeline.html#asset-organization

记得重启你的服务器

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,也试图找到“Rails 方式”来做到这一点。这就是我最终得到的结果:

    正如 Rob 已经提到的:

    vendor/assets 适用于外部实体拥有的资产,例如 JavaScript 插件和 CSS 框架的代码。

    来源:2.1 Asset Organization

    让我们举一个实际的例子:使用jquery_datepicker gem(注意:由于这个问题,我们不得不使用解决方法:bundle pack does not work with git sources)。

    1) 安装 gem(非常简单):

    cd vendor/gems
    git clone https://github.com/albertopq/jquery_datepicker.git
    

    2) 将此添加到您的 Gemfile 中

    gem 'jquery_datepicker', :path => 'vendor/gems/jquery_datepicker'
    

    3) 安装一个 jquery-ui 主题

    • ThemeRoller 选择一个主题,检查日期选择器和滑块 和jQuery版本
    • 下载并解压包内容
    • css/theme-name 文件夹中的 CSS/images 移动它们:
      • jquery-ui-1.8.xx.custom.cssapp/vendor/stylesheets/
      • images 文件夹到 app/vendor/images/(是的,移动整个文件夹 images 所以你最终会得到这样的东西 app/vendor/images/images/ui-icons_256x240.png
    • i18n 从development-bundle/ui/i18n 文件夹(可选)将它们移动到:
      • app/vendor/javascripts/下创建文件夹i18n
      • jquery.ui.datepicker-xx.js移动到此文件夹app/vendor/javascripts/i18n/
      • 确保i18n 文件夹已加载,因此包含在application.js
    //= require_directory ./i18n

    vendor/assets 会自动加载 AFAIK,因此您不必在资产管道中包含路径。

    我想看看其他人是如何解决这个问题的,这是一个非常好的问题。

    【讨论】:

      【解决方案3】:

      我认为您没有收到答案的原因是您不清楚您在问什么。您是否在问将插件放入资产管道是否过大?您是在问是否必须重命名文件引用?

      我总是将我所有的 jquery 插件放在我的资产管道中。不管是否矫枉过正,都在一个地方,它们只编译一次,所以即使编译它们需要更长的时间,也不会影响我的应用程序。

      【讨论】:

      • 这些插件通常有自己的目录结构。您是保留它,还是将 CSS 移动到 /stylesheets 目录,将图像移动到 /images 目录等?
      • 这是我感到困惑的部分。因为如果我保留插件的目录结构,我应该将它放在 /assets 管道的哪个子目录中?
      • 我个人将 css 移动到 /stylesheets 目录,将图像移动到 /images 目录,然后根据需要更改路径。您几乎可以进入 css 文件并在“url”上进行查找,然后您将捕获所有图像路径。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-15
      • 2014-11-07
      • 1970-01-01
      • 2013-02-24
      相关资源
      最近更新 更多