jquery - 为什么 Assets 管道找不到我的 JQuery?

标签 jquery ruby-on-rails haml asset-pipeline

我正在尝试在 Rails 3.2.8 应用程序中使用 JQuery 插件。

相关代码如下...

/app/views/layouts/application.html.haml文件中:

!!!
%html
  %head
    = javascript_include_tag :defaults
    = javascript_include_tag '/assets/nospam.js'

/public/javascripts/application.js文件中:

//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require nospam

/app/assets/javascripts/nospam.js文件中:

$('#my-email').html(function(){
  var e = "me";
  var a = "@";
  var d = "mysite";
  var c = ".com";
  var h = 'mailto:' + e + a + d + c;
  $(this).parent('a').attr('href', h);
  return e + a + d + c;
});

/app/views/layouts/index.html.haml文件中:

%p
We love email, so why not send a message to
%a{:href => "#"}
  %span#my-email please enable javascript to view
and let us know what's on your mind.

Gemfile中:

gem 'jquery-rails'

group :assets do
  gem 'jquery-ui-rails'
end

我已运行 bundle install 并重新启动服务器,但插件无法正常工作,并且在 Chrome 的 Javascript 控制台中收到此错误:

GET http://localhost:3000/assets/nospam.js 404 (Not Found) 

rails控制台中,我得到:

Rails.application.config.assets.paths
 => ["/Users/steven/Dropbox/testivate/app/assets/javascripts", "/Users/steven/Dropbox/testivate/app/assets/stylesheets", "/Users/steven/Dropbox/testivate/vendor/assets/javascripts", "/Users/steven/.rvm/gems/ruby-1.9.3-p194/gems/jquery-rails-2.1.3/vendor/assets/javascripts"] 

我现在通过禁用 Assets 管道来完成这项工作,但我知道出于性能原因我最终应该重新启用它。

我应该怎么做才能让它发挥作用?

谢谢

史蒂文。

最佳答案

取出线:

/app/views/layouts/application.html.haml

= javascript_include_tag '/assets/nospam.js'

nospam.js 文件已经编译到 application.js 文件中,因此无需单独包含它。

此外,您需要确保 JQuery 代码在它引用的 html 之后执行,因此添加 $(document).ready 行,如下所示:

/app/assets/javascripts/

$(document).ready(function () {
  $('#my-email').html(function(){
    var e = "me";
    (etc...)

关于jquery - 为什么 Assets 管道找不到我的 JQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894686/

相关文章:

ruby-on-rails - 强制 HTTP 响应在 Rails 中返回状态 200

Javascript HAML 引擎

playframework - JHAML 和 Play Framework ?

ruby-on-rails - Haml/Ruby/Rails 有条件地添加元素?

Javascript Jquery - 如果单击子元素则不关闭

jquery - 使用 jQuery 将动画从一个 CSS 类转换为另一个 CSS 类,特别是 background-image 属性?

javascript - 将 ajax 返回的 (json) 日期转换为 javascript 日期(在 IE 9 中不起作用)

asp.net - 有关从 ASP.NET MVC 应用程序播放声音文件的建议

ruby-on-rails - 具有未知键和强参数的 Rails 哈希

ruby-on-rails - 让 ffmpeg 与 Heroku 一起工作