2

我正在使用 Ruby on Rails 4。 -- app/views/layouts/application.html.erb 包含:

<!DOCTYPE html>
<html>
  <head>
    <%= javascript_include_tag "application" %>
  </head>
  <body>
    <canvas id="can"></canvas>
    <%= link_to "link to here", "#" %> 
    <button onclick="task()" >make square</button>
  </body>
  <script>
    function task(){
      var c = document.getElementById("can");
      var ctx = c.getContext("2d");
      ctx.fillStyle="#FF0000";
      ctx.fillRect(0,0,c.width,c.height);
    }
  </script>
</html>

--app/assets/javascripts/application.js 包含:

//= require turbolinks

该程序在我的 Chrome 和 Firefox 工作站上运行良好。但是,在 Safari 中的 ipad 上,当我单击链接时,我无法再通过单击按钮使画布重新出现。当我重新加载页面时,该按钮起作用。如果我删除 application.html.erb 的第 4 行,那么 Safari 的行为就像 Chrome,并且该按钮始终有效。但是,如果没有第 4 行,链接将不再导致框消失。

这是我的第一个 Rails 项目。我在这里完全不知所措,我们将不胜感激任何帮助、见解、线索或建议。先感谢您。--laertiades

4

2 回答 2

1

我认为turbolinks有一些错误。

我试图在我的网站上实现 skrollr,

并且 turbolinks 导致了某种错误,阻止了 skrollr

在重新加载/返回命令后正常工作。

你可能遇到了和我一样的问题。

放一些 console.log 语句,看看你的页面是否立即被加载了两次。

第二次加载时,它显示日志,但不显示行号。

我还没有弄清楚这一点,所以我只是从我的应用程序中删除了 turbolinks。

Turbolinks “使您的应用程序中的以下链接更快”,

因此,这不是您必须保留在应用程序中的必要功能。

您可以简单地删除该行

//=require turbolinks 
于 2013-10-19T18:11:31.893 回答
0

经过数小时的摆弄,我终于弄清楚了如何让 skrollr 与 turbolinks 或任何其他 pushstate 方法一起工作。

嵌入并正常调用 skrollr 函数:

$(window).ready(function() {
var s = skrollr.init(); 
});

然后skrollr.init().refresh();在新页面上使用或为您的 pushstate 插件加载页面功能。所以使用 turbolinks 使用这个:

$(document).on('page:load', function () {
skrollr.init().refresh(); 
});

希望这会为某人节省很多时间,应该在 skrollr 文档中引用它,特别是因为它有一个 gem。

于 2014-05-13T14:58:26.480 回答