每次在rails中命中路由时执行javascript

时间:2015-07-11 05:58:09

标签: javascript ruby-on-rails twitter-bootstrap

当我的页面第一次加载/assets/javascript/home.js中的代码时,会使用Bootstraps附加我的导航栏。

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

当我转到另一条路线,例如/blog时,我不想要执行此代码,并希望我的静态CSS渲染效果很好。问题是,当我回到主路线(/)时,JavaScript不会再次执行,我的导航栏正在使用其自然的CSS。如果我此时刷新,页面将完全重新加载,我的导航栏将正确定位。

我认为这个问题是因为turbo-links,但我对Rails没有足够的经验来解决这个问题。希望有人可以解释一下!

1 个答案:

答案 0 :(得分:0)

如果你正在使用turbolinks,你可以这样做:


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

Turbolinks更改$(fn)(这是$(document).ready的快捷方式),在更改为其他路径后运行,因此它将在每次路径更改时运行此代码。