2017-10-20 47 views
0

我将登录表单更改为“remote:true”后出现一些奇怪的行为。 之前,登录成功后,我做了一个redirect_to到不同的页面,它执行Javascript中的正文。Rails - turbolinks问题重定向

<script> 
writeCookie(); 
</script> 

JavaScript已经通过该视图特定咖啡文件加载

#= require write_time_zone_cookie 

writeCookie()的作品像预期,但我更改登录后,“远程:真正的”我知道后JS错误redirect_to。

Uncaught ReferenceError: writeCookie is not defined 
    at HTMLDocument.<anonymous> (<anonymous>:4:11) 
    at HTMLDocument.dispatch (jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:5227) 
    at HTMLDocument.elemData.handle (jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:4879) 
    at Object.t.dispatch (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6) 
    at r.t.Controller.r.notifyApplicationAfterPageLoad (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:7) 
    at r.t.Controller.r.visitCompleted (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:7) 
    at r.t.Visit.r.complete (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6) 
    at r.<anonymous> (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6) 
    at turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6 

我已经尝试过一些建议,从网络,如:

$(document).on('turbolinks:load', function() { 
      writeCookie(); 
     }); 

但是,这并没有解决我的问题。 有人有想法吗?

感谢 亚历克斯

+0

你能发布你的整个JavaScript清单文件(application.js)吗? –

+0

@ PatrickO'Grady // =需要turbolinks // = require read_url_params –

回答

0
Uncaught ReferenceError: writeCookie is not defined 

function writeCookie() {}未在您的js文件中定义。

证明这只是在您<script>标签下面的函数

<script> 
    function writeCookie() { 
     // Your function code hear 
    } 
    writeCookie(); 
</script> 

如果这样可以解决您的问题,我是对的。你没有这个功能,所以问题与你的资产管道有关。

原因是,您可能正在HTML文档中运行该脚本,当文档加载时,也许在资产管道加载文件write_time_zone_cookieread_url_params(其中包括writeCookie()函数)之前。

所有文件都需要包含在您的资产管道中,因此在运行writeCookie()函数时,如果您的文件已加载到资产管道中,请检查浏览器开发者工具。只需设置一个断点。

我可以帮你多,但给我们更多的信息,它是不是真的能够帮助您更与您给我们

enter image description here

0

它结束了完全删除turbolinks有限的信息(Guide how to do it )。在页面重新加载和双控制器操作执行后,我看到更多的JS问题。它有助于在控制台中“保留日志”:)。之后我唯一遇到的问题是AJAX调用中的重定向。我通过向我的ApplicationController添加一个辅助方法来解决:

def redirect_by_request_type(url) 
    if request.xhr? 
     render js: "window.location='#{url}'" 
    else 
     redirect_to url, status: 303, turbolinks: false 
    end 
    end