有没有办法让(黑客)turbolinks只刷新特定的选择器?

时间:2014-12-18 19:01:06

标签: ruby-on-rails-4 turbolinks

我想在rails 4应用程序中使用turbolinks但不能替换整个<body>标记。相反,我想为turbolinks指定一个标记/选择器来刷新。

像...一样的东西。

<body>
  <div class="turbolinks-refreshes-this">
    Some content that is replaced whenever a link is clicked.
  </div>
  <div class="turblinks-does-not-refresh-this">
    Some content that remains even if a link is clicked.
  </div>
</body>

我的猜测是你需要分叉turbolinks来添加这个功能,但我想把它扔出去看看是否有其他人试图这样做。

1 个答案:

答案 0 :(得分:1)

你看过pjax了吗?它与Turbolinks非常相似(并在Turbolinks自述文件中提及),但允许您指定目标容器。 Here's a Railscast,展示了如何在Rails应用中使用它。

这是一个(稍加修改)的摘录from the pjax README

<h1>My Site</h1>
<div class="container" id="pjax-container">
  Go to <a href="/page/2">next page</a>.
</div>
     

我们希望pjax抓取网址/page/2,然后替换#pjax-container   随着它回来。不会重新加载任何样式或脚本   即使是h1也可以保持不变 - 我们只想改变它   #pjax-container元素。

     

我们通过告诉pjax监听a标签并使用来做到这一点   #pjax-container作为目标容器:

$(document).pjax('a', '#pjax-container')
     

现在当某人在兼容pjax的浏览器中点击“下一页”时   #pjax-container的内容将被替换为/page/2的内容   {{1}}。