Tag: turbolinks

容易出错的代码随机开始工作,但在刷新后再次破坏

我正在尝试安装“selectize-rails”gem。 我遇到了很多麻烦( TypeError:$(…)。selectize不是一个函数 )所以我放弃了一段时间并且处理不相关的事情。 然后我回到它,gem突然工作,虽然我改变的代码都没有与它相关。 然后,我更改了一行代码并刷新了页面以查看结果,并再次在之前的Web控制台中显示相同的错误: TypeError: $(…).selectize is not a function 之后,这就是我所做的一切:1)在文本编辑器中按“返回”以恢复更改,2)保存文档,3)刷新页面。 并且,错误仍然存​​在,尽管完全相同的代码仅在几秒钟前工作。 有谁知道这有可能吗? 这是不起作用的代码块,然后突然开始工作,然后再次停止: $(document).ready(function() { console.log( typeof $.fn.selectize === ‘function’); // true console.log( $(‘#select-to’).length === 1 ); // true var REGEX_EMAIL = ‘([a-z0-9!#$%&\’*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\’*+/=?^_`{|}~-]+)*@’ + ‘(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)’; $(‘#select-to’).selectize({ persist: false, maxItems: null, valueField: ’email’, labelField: ‘name’, searchField: [‘name’, ’email’], options: [ {email: ‘brian@thirdroute.com’, name: […]

Turbolinks缓存之前和之后的Javascript DOM事件

我在这里: $(document).on ‘turbolinks:load’, -> console.log “page has loaded!” $ -> $(“button#show-hide”).click (e) -> e.preventDefault() 这使得我的click事件仅在Turbolinks缓存页面后可用。 我可以做$(document).on ‘turbolinks:before-visit ,只有在Turbolinks缓存之前才能使事件可用。 我应该如何随时提供活动?

如何通过在Rails上启用Turbolinks的AJAX正确呈现部分?

我目前正在开发一个Rails应用程序,它必须与外部Web API通信,从结果更新DB记录并异步更新视图。 我目前在做什么 我有一个list操作,我直接从数据库中显示数据,其中包含一个在分页表中发送的电子邮件列表。 呈现视图后,我需要向应用程序(在不同的路径上)发出一个AJAX请求,该请求向外部Web API发出请求,更新数据库,然后使用包含所有电子邮件的table呈现部分,同样在原始list操作上呈现的。 以下代码处理AJAX请求: # _mail_list_loader.js.erb document.addEventListener(“turbolinks:load”, function() { $.ajax({ url: ‘/certified_mail/mail_list’, type: ‘get’, data: { page: , rut: , from: , to: , ids: } }); }); 哪个响应是.js.erb呈现实际table的部分: # mail_list.js.erb $(‘#mail-list’).html(”); _mail_list_loader.js.erb在我的application.html.erb呈现: # application.html.erb … 对于首先加载表的操作和处理AJAX请求的操作,我的控制器看起来像这样: class CertifiedMailController < ApplicationController def list if params[:page].nil? || params[:page].to_i <= 0 redirect_to action: :list, […]

如何在共享视图中禁用单页的Turbolinks?

我有一个Javascript,它应该在$(document).ready上工作,但它不会,因为我还必须使用turbolinks。 有没有办法为这个脚本禁用它? 或者至少,有没有办法为视图禁用它,我希望我的脚本可以工作? 遗憾的是,我的网站必须具有相同的布局文件,因为它对于企业风格很重要。 好的,我找到了一种方法,应该怎么做,但我不知道该怎么做。 在我的application.html.erb中,我有tp add <body data-no-turbolinks > 如果我在页面上,问题是,我不知道如何检查。 任何人都可以给我一个暗示吗?

Rails Turbolinks中的Facebook插件页面无法加载

在我的Rails应用程序中,我正在加载Facebook插件页面,但由于turbolinks它不会加载每个页面(仅有时)。 我在这个页面上尝试过这个脚本 ,但现在它从未加载过。 我做了什么? 我用这个脚本创建了facebook.coffee: $ -> loadFacebookSDK() bindFacebookEvents() unless window.fbEventsBound bindFacebookEvents = -> $(document) .on(‘page:fetch’, saveFacebookRoot) .on(‘page:change’, restoreFacebookRoot) .on(‘page:load’, -> FB?.XFBML.parse() ) @fbEventsBound = true saveFacebookRoot = -> if $(‘#fb-root’).length @fbRoot = $(‘#fb-root’).detach() restoreFacebookRoot = -> if @fbRoot? if $(‘#fb-root’).length $(‘#fb-root’).replaceWith @fbRoot else $(‘body’).append @fbRoot loadFacebookSDK = -> window.fbAsyncInit = initializeFacebookSDK $.getScript(“//connect.facebook.net/cs_CZ/sdk.js#xfbml=1&version=v2.6”) initializeFacebookSDK = […]

Ruby on Rails阻止Turbolinks劫持AJAX操作

我正在按照RoR入门指南进行操作并添加一些内容。 具体来说,我想要实现的是,在步骤5.13删除文章中 ,我使用AJAX而不是使用标准模式删除了一篇文章。 我想以最符合RoR做事方式的方式这样做。 阅读使用Rails章节中的JavaScript后 ,以下步骤似乎是要走的路: 将属性remote: true添加到link_to帮助程序(请参阅代码段A) 通过添加data: {turbolinks: false}禁用turbolinks这个link_to帮助data: {turbolinks: false} (参见代码片段A) 向控制器添加一些逻辑,确保返回JSON(参见代码片段B)。 添加侦听ajax:success事件的JavaScript,然后将项目设置为动画(请参阅代码段C)。 片段A. ‘remove-article’ %> 代码片段B. def destroy @article = Article.find(params[:id]) respond_to do |format| if @article.destroy format.html { redirect_to articles_path } format.json { render json: @article } else format.html { render action: “index” } format.json { render json: @article.errors, status: :unprocessable_entity […]

导航到使用TurboLinks的页面时,不会显示Google跟踪代码管理器预览

我不认为GTM正在为我的Rails应用程序正确记录数据。 当我使用预览function时,开发人员工具中的GTM预览数据仅在初始页面加载时显示,后续页面加载(使用turbolinks)不显示预览数据。 我应该如何使用TurboLinks设置GTM? 我在标题中设置了我的GTM,如下所示: var dataLayer = []; (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({‘gtm.start’: new Date().getTime(),event:’gtm.js’});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!=’dataLayer’?’&l=’+l:”;j.async=true;j.src= ‘https://www.googletagmanager.com/gtm.js?id=’+i+dl;f.parentNode.insertBefore(j,f); })(window,document,’script’,’dataLayer’,’GTM-N7MDCP’); 然后在身体的顶部: dataLayer.push({‘userID’: ”},{‘userCategory’: ‘User’}); var url = window.location.href; dataLayer.push({ ‘event’:’pageView’, ‘virtualUrl’: url });

如何使用turbolinks在Rails4上启用`sorttable.js`

Rails 4.2.0,turbolinks(2.5.3) jquery-rails(4.0.3),jquery-ui-rails(5.0.3) sorttable.js 适用于Chrome,Firefox和IE的应用 应该发生什么 :无论是重定向,渲染还是只是单击应用程序中的新页面,任何具有类可排序表的表(我在原始JS中编辑它)都应该按列标题排序。 实际发生的事情 :我在联系页面上。 我点击刷新,JS中的记录器语句出现了。 该插件按预期工作。 如果我导航到Home,然后返回到Contacts,该文件仍然列在页面源中,但不显示任何记录器语句。 该插件不起作用。 我们的application.js读取如下: //= require jquery //= require jquery_ujs //= require jquery-ui //= require jquery_nested_form //= require bootstrap //= require sorttable //= require_directory . //= require autocomplete-rails //= require turbolinks //= require bootstrap-switch 每页或完全禁用Turbolink对我们来说不是一个解决方案。 如果文件不能与turbolinks一起使用,我愿意使用gem; 但是,gem应该为应用程序添加一些代码。 我们宁愿没有专门用于选择要排序的列的类。 此外,一些待排序的列不是来自ActiveRecord(如1个单元格中的2个属性)。

Rails turbolinks打破了pnotify

在我的rails应用程序中,我有它,以便当您投票,订阅或取消订阅列表时,它将显示使用pnotify的弹出窗口。 这工作正常,直到用户导航到另一个页面,现在它不再工作。 这仅在加载或重新加载页面时有效。 我知道这是因为在rails 4应用程序中turbolinks但它似乎执行除了pnotify之外的所有其他javascript代码。 附加信息.. 订阅/取消订阅和投票按钮具有方法post并远程执行,这意味着我有一个单独的文件名subscribe.js.erb,unsubscribe.js.erb和vote.js.erb,用于处理javascript代码的执行时用户点击了按钮。 这是我如何创建一个新的pnotify对象的示例: new PNotify({ title: “Subscribed!”, text: “”, type: ‘info’, opacity: .8, animation: { effect_in: ‘show’, effect_out: ‘slide’ }, buttons: { sticker: false } }).get().click(function() { $(this).remove(); }); 我也在使用一个名为’pnotify-rails’ pnotifygem

使用基础和Turbolinks与Rails 4的麻烦

我有一个带2个按钮的标题:登录和注册就像这样 。 当我点击其中一个时,会出现一个窗口: 窗口打开 。 为此,我使用了“Reveal Modal”的“Reveal Modal”。 我的问题:如果我点击链接打开我的网站的新页面并尝试打开/关闭登录或注册弹出窗口,窗口关闭,但这次阴影保持( 像这样 ),我需要按F5这又有效了。 我使用Rails 4和基础5。 文件_header.html.erb(查看部分) logo Login Sign up Page Test Page Test 文件application.js //= require jquery //= require turbolinks //= require foundation //= require bxslider/jquery.bxslider.min.js //= require home //= require_tree . $(function() { $(document).foundation(); }); 谢谢您的帮助。