相关疑难解决方法(0)

使用Rails 3.1,您在哪里放置"特定于页面"的JavaScript代码?

据我所知,您的所有JavaScript都合并为1个文件.当Rails添加//= require_tree .application.js清单文件的底部时,默认情况下会执行此操作.

这听起来像是一个真正的生命保护程序,但我有点担心特定于页面的JavaScript代码.此代码是否在每个页面上执行?我想要的最后一件事是,只需要在1页上需要为每个页面实例化我的所有对象.

此外,代码是否也存在冲突的可能性?

或者你是否script在页面底部放了一个小标签,只是调用一个执行页面javascript代码的方法?

那你不再需要require.js了吗?

谢谢

编辑:我很感谢所有的答案......我认为他们并没有真正解决问题.其中一些是关于造型而且似乎没有关联...而其他人只是提到javascript_include_tag......我知道存在(显然......)但是看起来Rails 3.1的方式将会包括所有的将您的JavaScript编入1个文件,而不是在每个页面的底部加载单独的JavaScript.

我能想到的最好的解决方案是divids或classes 包装标签中的某些功能.在JavaScript代码,你只要检查idclass在页面上,如果是,您在运行与之相关联的JavaScript代码.这样,如果动态元素不在页面上,则JavaScript代码不会运行 - 即使它已包含在application.js由Sprockets打包的大量文件中.

我的上述解决方案的好处是,如果在100个页面中的8个页面中包含搜索框,则它将仅在这8个页面上运行.您也不必在网站的8个页面上包含相同的代码.实际上,您永远不必在任何地方再次在您的网站上包含手动脚本标记.

我认为这是我问题的实际答案.

javascript ruby-on-rails ruby-on-rails-3.1 sprockets asset-pipeline

386
推荐指数
11
解决办法
8万
查看次数

Rails 3:在哪里放javascript的好经验法则?

在为网站中的特定页面编写javascript时,您何时想将javascript转换为函数并将其包含在内application.js

我已经看到了关于这样做(以及缩小或gzip-ing)的建议,以最小化HTTP请求.这是有道理的,但可维护性呢?如果我有一个特定于一个视图的js代码,那么看起来更有意义的是看一个潜在的大量application.js.该代码可以嵌入到该视图中,也可以放在该视图文件夹中的自己的.js(.js.erb.rjs)文件中.

我已经看到另一个建议,Rails会自动将所有javascript合并到一个文件中.这是真的?

TLDR:开发人员在编写javascript时担心优化需要多少或多少?

javascript optimization ruby-on-rails-3

25
推荐指数
1
解决办法
1万
查看次数

在rails中为每个控制器加载Javascript

Rails中每个视图的JavaScript文件

我调查了类似的线程,但我无法抓住.下面是我的application.js文件.

//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require vendor
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

我有一个资产管道的目录结构如下.

--javascripts
 -misc // directory
   helper.js
session.js
app.js
application.js
home.js
Run Code Online (Sandbox Code Playgroud)

我如何加载所有页面的misc目录和home.js for HomeController和session.js SessionController.我不想让不需要的JS在每个地方加载.

javascript ruby-on-rails

10
推荐指数
1
解决办法
8334
查看次数

如何在单独的文件中查看此脚本?

我有一个jquery脚本,每2秒运行一次ajax脚本

javascript:
  function getvalue(){
    $.ajax({
      url: "http://localhost:3000/companies/#{@company.url}",
      type: "GET",
      dataType: "json",
      success: function (json) {
      $('.blabla').html(json.clicks);
      $('.tratata').html(json.shows);
      }
    });
  }

javascript:
  $(document).ready(function(){
    getvalue();
    setInterval('getvalue()', 2000);
  });
Run Code Online (Sandbox Code Playgroud)

当我试图在资产中移动这个脚本并通过javascript_include_tag它调用它时 - 它开始在整个应用程序中工作,而不仅仅是在我称之为他的视图中.

如何解决?

UPD

我把这个脚本放到app/assets/javascripts/foobar.js中,然后打电话给他

  = javascript_include_tag 'foobar'
Run Code Online (Sandbox Code Playgroud)

jquery ruby-on-rails

6
推荐指数
1
解决办法
75
查看次数

Rails在html公共文件中包含js

我有一些html页面,其中每个页面都包含一些javascripts文件。我必须在哪里放置这些文件?

folder/
  page1/
    index.html
    script1.js
  page2/
    index.html
    script2.js
Run Code Online (Sandbox Code Playgroud)

更新

我解释得更好。我有一些由html页面和一些javascripts文件组成的小项目,其中使用画布。每个页面都有不同的脚本。

/sketches
  /project1
     index.html
     script1.js
     sketch.js
  /project2
     index.html
     sketch.js
Run Code Online (Sandbox Code Playgroud)

名为“ sketch”的文件在它们之间是不同的。我努力使一个控制器具有一个参数id,并以此为基础加载另一个项目。我这样做是将html页放在公用文件夹中,并且可以正常工作,但是我在使用javascript时遇到了问题,被拒绝了。

因此,对于您对我说的话,我必须将所有javascript放在单独的文件夹中...我想保留该结构。Rails中没有办法将包含所有项目的文件夹作为静态服务吗?

html javascript ruby ruby-on-rails ruby-on-rails-5.1

0
推荐指数
1
解决办法
1338
查看次数