js代码在Rails中不起作用

时间:2015-04-13 22:18:50

标签: javascript ruby-on-rails asset-pipeline turbolinks

我在application.js文件中放了一些js代码,但它不起作用......

的application.js:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

//...

obj.dd.on('click', function(event){
    $(this).toggleClass('active');
    return false;
});

//...

$(function() {

    var dd = new DropDown( $('#dd') );

    $(document).click(function() {
        // all dropdowns
        $('.wrapper-dropdown-5').removeClass('active');
    });

});

iI也在initializers / assets.rb文件中激活了一行:

 Rails.application.config.assets.precompile += %w( search.js )

但无论如何我的代码无法在视图中使用。我认为应该没有什么额外的,就像在application.js中一样。

或者可能应该有别的东西?

3 个答案:

答案 0 :(得分:1)

1)您是否在应用程序布局中提到了这一点?

<%= javascript_include_tag 'application', 'data-turbolinks-track' =>  true %>

2)在此之后,在application.js

中使用警告消息
alert('Hello');

答案 1 :(得分:0)

applications.js中的工作javascript会有效。所以我猜你的问题不是它的application.js部分,而是你的功能不起作用。

console.log 'clicked'功能中添加click以查看是否点击了火。我认为您的javascript问题可能与您的点击功能无关,而不是document.ready()功能。

答案 2 :(得分:0)

  

Rails.application.config.assets.precompile + =%w(search.js)

通过查看上面的代码行。我猜你有search.js档案。每当您想使用外部js文件(手动添加)时,您必须通知 application.js 文件以包含此类文件。

因此,您的application.js文件应该是(如果您要添加 search.js ,该文件不在app/assets/javascript/下并放在vendor/assets/javascript/下)< / p>

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require search  #js file will be added like this without it's extension 
//= require_tree .

注意: //= require_tree将包含app/assets/javascript/文件夹下的所有js文件。