Sti*_*aNX 78 javascript jquery ruby-on-rails
当我在rails中使用link_to helper时,我在加载我的javascript时遇到了一些问题.当我手动输入带有'localhost:3000/products/new'的url或重新加载页面时,javascript会加载,但是当我通过下面所写的链接时,jQuery $(document).ready
将不会加载到新页面上.
单击此链接时,链接_to,javascript无法加载:
<%= link_to "New Product", new_product_path %>
Run Code Online (Sandbox Code Playgroud)
products.js文件
$(document).ready(function() {
alert("test");
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.提前致谢!
Rya*_*ott 137
你在使用Rails 4吗?(通过rails -v
在控制台中查找)
这个问题可能是由于新添加的Turbolinks宝石.它使您的应用程序的行为类似于单页JavaScript应用程序.它有一些好处(它更快),但不幸的是它打破了一些现有的事件,例如$(document).ready()
因为页面永远不会重新加载.这可以解释为什么当你直接加载URL时JavaScript工作,但是当你通过一个导航到它时不能link_to
.
这是关于Turbolinks 的RailsCast.
有几种解决方案.您可以使用jquery.turbolinks作为插件修复,或者您可以切换$(document).ready()
语句而不是使用Turbolinks 'page:change'
事件:
$(document).on('page:change', function() {
// your stuff here
});
Run Code Online (Sandbox Code Playgroud)
或者,您可以执行类似的操作以兼容常规页面加载以及Turbolinks:
var ready = function() {
// do stuff here.
};
$(document).ready(ready);
$(document).on('page:change', ready);
Run Code Online (Sandbox Code Playgroud)
如果你使用Ruby on Rails> 5(你可以通过rails -v
在控制台中运行来检查)使用'turbolinks:load'
而不是'page:change'
$(document).on('turbolinks:load', ready);
Run Code Online (Sandbox Code Playgroud)
Ice*_*aze 63
我遇到了同样的问题,但jquery.turbolinks没有帮助.我注意到我必须覆盖GET方法.
有我的样本:
<%= link_to 'Edit', edit_interpreter_path(@interpreter), method: :get %>
Run Code Online (Sandbox Code Playgroud)
use*_*001 24
如果你在轨道5而不是'page:change'
你应该'turbolinks:load'
像这样使用:
$(document).on('turbolinks:load', function() {
// Should be called at each visit
})
Run Code Online (Sandbox Code Playgroud)
资料来源:https://stackoverflow.com/a/36110790
小智 5
您还可以使用指定data-no-turbolink的div包装链接。
例:
<div id="some-div" data-no-turbolink>
<a href="/">Home (without Turbolinks)</a>
</div>
Run Code Online (Sandbox Code Playgroud)
资料来源:https : //github.com/rails/turbolinks
归档时间: |
|
查看次数: |
31478 次 |
最近记录: |