相关疑难解决方法(0)

在Rails 3应用程序中添加特定于页面的JavaScript的最佳方法?

Rails 3有一些不引人注目的JavaScript,非常酷.

但我想知道最好的方法是为特定页面添加额外的JavaScript.

例如,我之前可能做过的事情:

<%= f.radio_button :rating, 'positive', :onclick => "$('some_div').show();" %>
Run Code Online (Sandbox Code Playgroud)

我们现在可以用类似的东西使它不引人注目

<%= f.radio_button :rating, 'positive' %>

# then in some other file
$('user_rating_positive').click(function() {
  $('some_div').show();
}
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是在哪里/如何包含JavaScript?我不想填写该application.js文件,因为此JavaScript仅适用于此视图.我应该以某种方式为每个页面包含一个自定义JavaScript文件,还是将其粘贴在标题所查找的实例变量中?

javascript ruby-on-rails ruby-on-rails-3

157
推荐指数
6
解决办法
8万
查看次数

我应该如何在一个页面上包含coffeescript文件?

编辑:一年后,如果我要再次这样做,我会用curl.js代替Rails资产管道.

相关:在Rails 3应用程序中添加页面特定javascript的最佳方法?

我正在编写一个应用程序,并使用coffeescript生成所有的js.这就是相关问题不能满足我需要的原因.

我希望能够将coffeescript文件放在我的资产目录的子文件夹中,并且只能在一个页面上提供.coffee文件.该页面位于命名路由上

match 'myNotifications' => 'user#notifications'

最明显的事情是将.coffee文件放入assets\javascripts\user\index.js.coffee.但在阅读有关资产的文档后,我不清楚.

我读了这一行(来自http://guides.rubyonrails.org/asset_pipeline.html):

您应该将任何JavaScript或CSS唯一的控件放在各自的资产文件中,因为这些文件可以仅为这些控制器加载,例如<%= javascript_include_tag params [:controller]%>或<%= stylesheet_link_tag params [ :controller]%>.

好的很酷,所以我把页面特定的js放入assets\javascripts\user.js.coffee.然后我重新加载了我的主页,按Ctrl F5.user.js文件仍在主页上加载.经测试$ -> alert 'ready from users controller'; 加载主页时看到警报.

Rails是否有办法让每页的coffeescript文件只能与该页面一起提供?我读错了吗?在assets文件夹中是否有一个地方可以放入.coffee文件,它们不会被每个页面加载?

更新:看起来我可能有一个答案:

有几种方法可以解决这个问题.我们可以使用require_directory而不是require_tree,因为这只会加载当前目录中的文件而不是子目录中的文件.如果我们想要更多地控制包含的文件,我们可以单独地要求它们而不是包括整个目录.或者,我们可以将我们想要包含在所有页面上的JavaScript文件移动到公共子目录中.然后我们可以使用require_tree ./public来包含那些文件.

我会在上午给出一个镜头.

ruby-on-rails coffeescript ruby-on-rails-3

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

使用Rails 3.1和Coffeescript"找不到变量"错误

我的应用程序中有一些视图,它引用了我的application.js文件,其中包含我在整个应用程序中使用的函数.

在使用3.1的边缘版本之后,我刚刚安装了Rails 3.1版本候选版本.直到我安装RC我没有任何问题,但现在我收到此错误:

ReferenceError:找不到变量:indicator_tag

indicator_tag是我在application.js中定义的函数.我在javascript文件中注意到的唯一区别是现在我的所有函数都包含在:

(function() { ... }).call(this);
Run Code Online (Sandbox Code Playgroud)

我理解这是针对变量范围的吗?但它可能阻止我的页面使用这些变量吗?在有人要求之前,我确保我的include标签中的javascript路径是正确的.

javascript ruby-on-rails coffeescript

22
推荐指数
2
解决办法
5771
查看次数

如何在Rails 3.1中为CoffeeScript使用选项"--bare"?

有人知道如何在Rails 3.1中使用此选项?现在CoffeScript .call(this)在每个文件上放置一个函数,但我想删除它.

编辑:" 无法找到变量"错误与Rails 3.1和Coffeescript "和" 模式为CoffeeScript模块 "有我想要的.我将改变我的全局变量以使用@global范围.

ruby-on-rails coffeescript

13
推荐指数
1
解决办法
4661
查看次数

如何将CoffeeScript(或JavaScript)执行限制在Rails 3.1中的特定控制器和操作?

新的Rails 3.1资产管道非常好,但由于所有CoffeeScript(或JavaScript)文件都被融合到每个页面中包含的单个文件中,因此它提出了这个问题:

如何将脚本的执行限制为特定的控制器或操作?我的CoffeeScript中有没有办法知道在请求期间使用了哪个控制器和操作,以便我可以在我的脚本中放置条件语句?

或者我完全以错误的方式接近这个?

javascript ruby-on-rails coffeescript

9
推荐指数
2
解决办法
2851
查看次数