【问题标题】:Ember.js with Rails4: browser back button crash ember application带有 Rails4 的 Ember.js:浏览器后退按钮崩溃 ember 应用程序
【发布时间】:2023-07-23 21:32:01
【问题描述】:

编辑:问题已解决。您只需删除 turbolinks

Rails4 应用程序中使用 ember-rails 0.13.0 我们会遇到浏览器后退按钮不起作用的问题。每次使用后退按钮返回上一个路线时,应用程序都会因此类错误而崩溃:

在 Firefox 24.0a2 上:

TypeError: Class.PrototypeMixin.applyPartial is not a function @ http://localhost:3000/assets/ember.js?body=1:11933

在 Chromium 28 上:

Uncaught Error: jquery-ujs has already been loaded! jquery.js?body=1:517I 
DEBUG: ------------------------------- ember.js?body=1:364
DEBUG: Ember.VERSION : 1.0.0-rc.6.1 ember.js?body=1:364
DEBUG: Handlebars.VERSION : 1.0.0 ember.js?body=1:364
DEBUG: jQuery.VERSION : 1.10.2 ember.js?body=1:364
DEBUG: ------------------------------- 

看起来整个应用程序堆栈再次加载,并以非功能代码库结束。无论如何,相同的应用程序与 Rails3 完美配合。

其他人对 ember.js 以及 turbolinks 有问题的报告:

Cannot perform operations on a Metamorph that is not in the DOM

【问题讨论】:

    标签: ember.js ruby-on-rails-4 turbolinks ember-rails


    【解决方案1】:

    经过一些调试,我们注意到是那些 turbolinks 导致了问题。使用后退按钮触发的 turbolinks 会对 ember.js 应用程序造成奇怪的影响,例如重新加载所有 javascript,从而覆盖应用程序的状态。

    删除 turbolinks 完成了这项工作。这是一个有用的链接如何做到这一点:http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4

    【讨论】:

    • Turbolinks 还会在 Ember 中导致“无法对不在 DOM 中的 Metamorph 执行操作”错误 - 再次,当我将 Turbolinks 踢到路边时消失了。
    • @Nathan 感谢您的报告。我已将其附加到原始问题中,因为它可能对某人有所帮助。
    最近更新 更多