Foundation 5 Topbar在导轨4中不能始终如一地工作

Ale*_*ube 8 javascript ruby-on-rails zurb-foundation drop-down-menu ruby-on-rails-4

我在我的rails 4应用程序中使用基础5.当我发送请求时,顶部栏菜单工作正常.我可以悬停项目和嵌套项目没有问题.然后,我单击其中一个项目,其中包含与之关联的link_to方法.有时它会给出正确的结果,我的菜单仍然可以正常工作,但有时候整个事情会冻结.这也使移动菜单的后退按钮消失.一旦我通过刷新或网址发送新请求,菜单就会再次运行.

Rails在日志文件中没有看到任何问题.我的菜单在rails之外工作正常.我想知道是否可能与我的link_to tag_helpers或我在我的应用程序中设置基础的方式有关?

以下是JS如何为基础路由的快速概述.(他们在他们的文档上建议的配置)views/layouts/application.html.erb:

<head>
 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 <%= stylesheet_link_tag    "application" %>
 <%= javascript_include_tag "vendor/modernizr" %>
</head>   
<body>     
  <%= javascript_include_tag "application" %>     
</body>
Run Code Online (Sandbox Code Playgroud)

资产/ application.js中:

//= require jquery
//= require jquery_ujs
//= require foundation
//= require turbolinks
//= require_tree .

$(document).foundation();
Run Code Online (Sandbox Code Playgroud)

还有其他人遇到过这个问题吗?除了不使用粉底5之外的任何好的解决方案?

谢谢Alex

Ecn*_*lyr 11

基金会已知道Turbolinks的问题,您的问题可能就是由此引起的.

要解决这个问题,您可以禁用Turbolinks并查看顶栏是否仍有问题.

这是一个简单的指南:http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4.

除此之外,如果你必须拥有Turbolinks,那么Turbolinks就是问题所在.您可以尝试添加jquery turbolinks,如下所示:https://github.com/kossnocorp/jquery.turbolinks.

如果问题仍然存在,下一步将是检查您导入javascript文件的顺序(这与Turbolinks/Foundation问题有关),您可能会对此感到满意.我没有确切的订单让你把它们放进去,但如果你搜索"Turbolinks Foundation"问题,你最终会偶然发现一些解决方案. 这不一定是某种解决方案,但它会引导您朝着正确的方向前进.

更新:尝试此订单导入您的JavaScript资源.并且,引用来源:

将所有Javascripts加载到标记内是很重要的.包含jQuery的顺序很重要 - 确保在turbolinks之前和jquery之后加载jquery.turbolinks.在你的application.js中包含jquery-turbolinks.js和turbolinks.js之间的所有自定义js
// app/assets/javascript/application.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs

//= require foundation
//= require jwplayer/jwplayer.js
//= require asset_videos

//= require turbolinks
Run Code Online (Sandbox Code Playgroud)

注意:请阅读Alex Aube在此页面上的答案,以获取更多有用信息.

  • @vanda对于任何想知道的人,我也只是在Chrome中遇到过问题.回到基础4和Rails 4/Turbolinks也是如此.包括jquery turbolinks和调整订单为我自己修复了以前的问题. (2认同)

Ale*_*ube 8

好.与Ecnalyr解释的一致.(他正确地解释了,我有点误解了).这对我有用:

我保留 = javascript_include_tag "application"在application.html.erb正文的末尾

application.js是这样的:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require foundation
//= require_tree .

$(document).foundation();

//= require turbolinks
Run Code Online (Sandbox Code Playgroud)