Rails 3.1 Asset Pipeline中的Javascript文件

时间:2011-11-07 21:21:01

标签: javascript jquery ruby-on-rails-3 asset-pipeline

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

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

3 个答案:

答案 0 :(得分:0)

你可以在application.html.erb中添加脚本标签,你的所有页面都会有jquery。 你可以用这种方式添加脚本:(你应该在文件夹app / javascript中添加jquery-1.7.min文件)

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

答案 1 :(得分:0)

请勿在 app / javascripts 中添加 home.js.erb ,但要从 home.js.erb 中提取您的jquery并将其放入应用/资产/ Javascript角/ 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“应用程序”调用

...最后,不要忘记将 gem'jquery-rails'添加到 Gemfile 并运行捆绑

答案 2 :(得分:0)

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

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

然后,这是一个小心使用选择器的问题,因为不会无意中干扰其他页面。换句话说,如果您希望一段代码在一个特定视图中而不是另一个视图中运行,则必须相应地调整.js代码,因为application.js中的所有视图都可以访问。