【问题标题】:Rails 3.1 newbie : where should I put javascript code?Rails 3.1 新手:我应该在哪里放置 javascript 代码?
【发布时间】:2011-12-07 11:59:10
【问题描述】:

我正在开发 Rails 3.1 应用程序,我对应该在哪里放置自己的 javascript 代码(例如 my.js)以及在哪里放置 3rd-party javascript 感到困惑库(例如 jQuery-UI)。

我知道在旧版本的Rails中,javascript应该都进入public/javascripts/目录,当我生成Rails 3.1应用程序时,没有public/javascripts/文件夹,但有 app/assets/verndor/assets/ 并且 app/assets 中有 application.js strong>,我想问一下:

  1. 在 Rails 3.1 中,我应该将 my.jsjQuery-UI js 放在 Rails 3.1 的什么位置??
  2. app/assets/application.js 应该做什么?
  3. 如何在我的 html 页面中包含 my.jsjQuery-UI js

----------------我说的对吗?----------

application.js 中的require_tree 是否 用于在 app/vendor/assets/javascript/ 下包含 3rd-party 库

application.js中的require "something"用于包含app/assets/javascripts/下的js文件??我说的对吗?

【问题讨论】:

    标签: ruby-on-rails-3.1


    【解决方案1】:

    Ryan Bates 对 Railscasts 上的资产管道有很好的概述。当我试图整理它时,它帮助了我。 http://railscasts.com/episodes/279-understanding-the-asset-pipeline

    【讨论】:

      【解决方案2】:

      把你自己的javascript和coffeescript放在app/assets/javascripts下。

      看看app/assets/javascripts/application.js的内部。当您运行rails new APP 时,它应该已将//= require_tree . 添加到此文件中。 See section 2.3 for more.

      这是 Sprockets 理解的特殊指令,它会自动包含与您的 application.js 文件位于同一目录中的所有文件以及它下面的子文件夹中的所有文件。

      如果您希望加载 jquery 和 jquery-ui,您的 application.js 文件应如下所示

      //= require jquery
      //= require jquery-ui
      //= require jquery_ujs
      //= require_tree .
      

      如果您的包中有gem 'jquery-rails',则此 gem 已经为您将 jquery 文件添加到资产管道中,因此您不必担心手动下载它们。。 p>

      在应用程序视图的 head 部分中,您需要在 head 部分中包含 javascript_include_tag "application"。如果您使用了生成器,很有可能它已经存在了。

      请阅读Rails Asset Pipeline了解更多信息。


      require_tree 行中的. 引用当前文件的位置。 //= 运算符正在引用资产管道。

      将文件放在 app/assets、lib/assets 或 vendor/assets 中会将其添加到资产管道中。 See section 2.1.

      【讨论】:

      • @Alex,你还是让我很困惑,我在问放置第三方库的位置以及放置我自己的 js 文件的位置。而且我也对 application.js 的用法和含义感到困惑。 application.js 中的 require_tree 是否用于在 app/vendor/assets/javascript 下包含 3rd-party 库,而 application.js 中的 require “something” 是否用于在 app/assets/javascripts 下包含 js 文件?我说的对吗?
      • 为了包含资产管道中的文件,您应该在 application.js 中以正确的顺序引用它。如果您将自己的 JavaScript 放在 app/assets/javascripts 中并在存储在此位置的 application.js 中使用 require_tree .,则您自己的 JavaScript 除外。
      • jQuery 文件来自gem 'jquery-rails'
      • 请注意,如果您使用jquery-ui gem 并手动添加jquery-ui 脚本,则会出现问题。最好单独使用宝石。
      最近更新 更多