2015-07-11 66 views
2

当我的页面第一次加载/assets/javascript/home.js中的代码时,它会使用Bootstraps粘贴来定位我的导航栏。每当一条路由在rails中被执行时执行javascript

$('.navbar').affix({ 
    offset: { 
    top: function() { 
     return this.bottom = $('.hero').outerHeight(true); 
    } 
    } 
}); 

当我去另一条路线如/blog,我不希望这个代码来执行,并希望我的静态CSS来呈现它的伟大工程。问题是当我回到家乡路线(/)时,JavaScript不会再执行,而我的导航栏正在使用其自然CSS。如果我在这一点刷新,页面将完全重新加载,并且我的导航栏将被正确定位。

我认为问题是因为turbo链接,但我没有足够的经验足以解决这个问题。希望有人能够点亮一些光芒!

+0

找到解决方案 http://stackoverflow.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links – Luca

回答

0

如果您使用turbolinks,你可以做这样的事情:

 

$(function() { 
    if (window.location.pathname === '/') { 
    // run your code 
    } 
}); 
 

Turbolinks改变$(FN)(这是一个快捷方式$(文件)。就绪)更改为后运行其他路径,所以它会在每个路径更改上运行此代码。从这个堆栈溢出后

+0

我不知道,如果我正在使用turbolinks。我只知道当我创建我的homecontroller它在我的assets/javascripts文件夹中创建了一个home.js。 – Luca

+0

我把你的代码封装在你的代码块中,当我回到路由时它仍然没有执行。 – Luca

+0

在这里找到解决方案http://stackoverflow.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links – Luca