繁体   English   中英

Rails 3.1 Asset Pipeline中的Javascript文件

[英]Javascript files in Rails 3.1 Asset Pipeline

我已经通过使用简单的script标记将jQuery放在home.html.erb文件的底部来测试了Rails应用程序的功能。 一切正常,直到我尝试在Rails 3.1中利用Asset Pipleine并将脚本放在app/javascripts/home.js.erb

任何人都知道为什么我无法让javascript在home.html.erb文件之外运行

您可以在application.html.erb中添加脚本标签,然后所有页面中都将包含jquery。 您可以通过以下方式添加脚本:(您应该在app / javascript文件夹中添加jquery-1.7.min文件)

    <%= javascript_include_tag 'jquery-1.7.min'%> 

不要将home.js.erb放入app / javascript中,而是从home.js.erb中提取您的jquery并放入app / assets / javascripts / home.js中

config.assets.precompile + =%w(* .js)添加config / environments / production.rb或在config / application.rb中添加全局环境(test / dev / prod)

app / assets / javascripts / application.js中的

//= require jquery
//= require jquery_ujs
//= require_self
//= require_tree .

从视图中使用javascript_include_tag“ application”进行调用

...最后,不要忘了将gem'jquery -rails'添加到您的Gemfile并运行

就我想做的是针对不同视图的单独javascript文件而言,我没有成功。 我尝试了不同的命名约定,等等。

但是对我有用的是,将我所有的javascript都放在application.js 这样做使整个应用程序中的每个视图都可以访问此代码。 根据您的需求和您的应用程序,您可能希望将该脚本放入[your-model-name].js.coffee ,以使其可访问(我认为仅适用于您的特定控制器和视图)。 由于我的应用是单个模型/控制器设置,因此本质上是相同的。

然后,要谨慎使用选择器,以免无意间干扰其他页面。 换句话说,如果您希望一段代码在一个特定视图中运行而不在另一个特定视图中运行,则由于所有视图都可以访问application.js中的所有内容,因此您将必须相应地调整.js代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM