Rails 请教一个关于 link_to 的问题 。

monsoon · 2014年03月29日 · 最后由 Rei 回复于 2014年03月29日 · 1885 次阅读

遇到一个问题,困惑了很久,网上搜索了很久也还是不知道怎么解决。

就是我有个侧边栏的导航条,导航条里面有很多的条目。这些条目使用 link_to 做的,

但是我发现每次点击点击 link_to 生成的时,页面是不会刷新的,但是实际上页面发生了跳转,右边的图成功地发生了变化。这是怎么回事?

现在唯一遇到的问题的是,这边导航条的折叠我是用 Bootstrap 的折叠 collapse.js 做的,只要这个折叠的 class 里面有 in 这个 class 它就会张开。 所以我在页面里写了下面这样的代码:

<% if controller_name == 'temperatures' %>
    $("#collapseOne").addClass("in");
<% elsif  controller_name == 'humidities' %>
    $("#collapseTwo").addClass("in");
<% end %>

当我进入 temperatures 的相关页面后,temperatures 的折叠是张开的,而进入 humidities 的相关页面后,humidities 的折叠是张开的。

可是当进入页面,点击 link_to 生成的后,页面没有完全刷新,导致点击后 左边的导航条没有运行上面的我给的 erb 的代码,所以侧边栏都是没有张开,是折叠的。

所以我想请问下大家这个 link_to 到底是怎么实现的,是刷新一部分页面还是怎么回事?如何在点击 link_to 生成的后运行 Jquery 之类的代码,或者说怎么解决我这个问题?

先谢谢大家了。

这段 js 是放在什么位置执行的,估计跟 turbolinks 有关。

1 楼正解

页面不刷新是通过 turbolinks 实现的……

比较土的办法是……在 view 里面判断哪个要加 class……然后加上就行了……

#1 楼 @Rei #2 楼 @sunday35034 #3 楼 @Kabie

谢谢了,我已经顺利解决了,的确是 turbolinks 的问题,后来在 page:load 事件里加了 JS 就没问题。 不过 turbolinks 不刷新页面,体验度真是提升了很多啊。

#4 楼 @monsoon 试过了就回不去了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册