2013-07-16 319 views
0

我在Rails 3中有一个遗留项目。升级到Rails 4时,我想测试turbo链接,但似乎无法使其工作。我已将“turbolinks”宝石添加到Gemfile中,并且将//= require turbolinks添加到app/assets/javascripts/application.js,然后重新启动服务器。故障排除Turbolinks

从Chrome中的网络请求活动可以看出,所有页面仍会进行整页刷新。

编辑:我跟着其中一个答案中建议的小Turbolinks测试。我添加了一个空白的演示控制器,以及page1,page2的视图。如果Turbolinks正常工作,turbolinks应该被视为网络请求的发起者,并且test.js不应该被加载。

这个小例子失败,因为test.js正在尝试加载,整个页面刷新,并且启动程序仍然不turbolinks。

page1.html.erb

<html> 
    <title>Page 1</title> 
    <body> 
    <h1>Page 1</h1> 
    <a href="/test_turbo/page2">Page 2</a> 
    </body> 
</html> 

page2.html.erb

<html> 
    <title>Page 2</title> 
    <script type="text/javascript" src="test.js"></script> 
    <body> 
    <h1>Page 2</h1> 
    </body> 
</html> 

回答

1

看看这个Turbolinks screencast

整个页面仍然呈现并返回给浏览器,但只有主体被替换。

您可以检查以确保他们有两页工作。应该加载页面,但是当你检查页面的头部时,它不应该包含测试JavaScript文件。让我们知道它是否仍然无法正常工作。

<html> 
    <title>Page 1</title> 
    <body> 
    <h1>Page 1</h1> 
    <a href="/page2">Page 2</a> 
    </body> 
</html> 

页2

<html> 
    <title>Page 2</title> 
    <script type="text/javascript" src="test.js"></script> 
    <body> 
    <h1>Page 2</h1> 
    </body> 
</html> 
+0

'test.js'被加载,所以不被使用Turbolinks。我把它放在演示控制器中,并将page1.html.erb和page2.html.erb添加到视图中。该应用程序现在没有使用资产管道,这是否与此有关? – John

+0

想通了。在dev env中,资产正在从public/assets/application.js中错误加载,而不是从'app/assets/javascripts/application.js'加载turbolinks。 – John