标签: turbolinks

Rails 4:Turbolinks 发送请求两次并重新加载页面

我正在使用 Rails 4.1.1 和 Ruby 2.1.0 开发 Ruby on Rails 应用程序。

我已将应用程序设置为使用 Turbolinks,这会导致 AJAX 链接出现问题。当我单击调用 AJAX 函数的链接时,会发生三件事:
1. 进行 AJAX 调用
2. 重新加载相同的链接
3. 应用程序服务器运行所有请求两次。

如何使这些链接作为标准的 AJAX 链接运行?

作为参考,这是我的相关部分GemFile

gem 'turbolinks'
gem 'jquery-turbolinks'
Run Code Online (Sandbox Code Playgroud)

以下是我在 中包含 JavaScript 库的方式application.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
Run Code Online (Sandbox Code Playgroud)

这是我在应用程序布局中包含 JavaScript 文件的方式:

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
Run Code Online (Sandbox Code Playgroud)

javascript ruby ajax turbolinks ruby-on-rails-4.1

3
推荐指数
1
解决办法
1401
查看次数

Rails 6:带有远程的表单:true 和 Turbolinks 在重定向后不显示 Flash

<%= simple_form_for @offer, remote: true %>启用了 Turbolinks。我正在尝试在我的update操作中使用以下内容重定向并显示成功闪烁:

respond_to do |format|
  if @offer.update(offer_params)
    flash[:success] = "#{@offer.name} #{t(:updated)}"
    format.html { redirect_to seller_offers_path }
    format.js
  else
    format.html { render :edit }
  end
end
Run Code Online (Sandbox Code Playgroud)

我的update.js.erb代码与重定向或闪存无关:

$(".ibox-content.actions").removeClass('sk-loading');
$('.sk-spinner').css("display", "none");
Run Code Online (Sandbox Code Playgroud)

在 application.html.erb 中,我可以用这个渲染 flash:

<div class="row">
  <% flash.each do |message_type, message| %>
     <%= content_tag(:div, content_tag(:strong, message), id: "flash_message",
                   class: "text-bold alert alert-#{message_type}") %>
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

目前我的表单已保存,但没有重定向。

当我添加Turbolinks.visit(<%= seller_offers_path %>)update.js.erb形式保存,重定向做,但没有闪光灯。

有没有办法让我可以在带有 Turbolinks 的重定向页面上显示 Flash remote: …

ruby-on-rails ujs simple-form turbolinks ruby-on-rails-6

3
推荐指数
1
解决办法
4620
查看次数

Rails 4 Turbolinks没有加载MathJax

我有一个使用MathJax的Rails4应用程序.我通过将以下行放在<head>app/views/layouts/application.html.erb文件的部分中来使用MathJax CDN :

<script type="text/javascript" src="path-to-mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
Run Code Online (Sandbox Code Playgroud)

有关更多信息:http://docs.mathjax.org/en/latest/start.html#mathjax-cdn

由于Turbolinks,MathJax仅在主页上加载,除非我刷新页面,否则不会加载到其他页面上(这是不可取的).相反,我希望MathJax只加载/ Math/New和Physics/Show页面.我该怎么办?(我不想停用turbolinks)

非常感谢你的帮助.

javascript ruby-on-rails head mathjax turbolinks

2
推荐指数
1
解决办法
753
查看次数

从一个页面导航到另一个页面时,JavaScript 不会执行

我正在构建我的第一个 Ruby on Rails 应用程序,并尝试创建一个动画导航栏。我正在使用 jQuery 和 Turbolink。

\n\n

这是我的application.js(下/app/assets/javascripts

\n\n
$(document).ready(function(){\n  $("#nav").hover(function(){\n    $("#nav").animate({left:\'10px\'});\n  },\n  function(){\n    $("#nav").animate({left:\'-220px\'});\n  });\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

application.html.erb在(下)上app/views/layouts,我有

\n\n
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>\n
Run Code Online (Sandbox Code Playgroud)\n\n

和我的超级导航栏,现在看起来像这样(也在应用程序/视图/布局下)

\n\n
<div id=\'nav\'>\n  <%= image_tag(\'arrow.png\', size: \'20x20\', id: "arrow") %>\n  <ul>\n    <li><%= link_to \'Main page\', root_path%></li>\n    <li><%= link_to \'R\xc3\xa9sum\xc3\xa9\', resume_path %></li>\n  </ul>\n</div>\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我加载应用程序时,动画起作用,但是当我导航到应用程序的其他页面时,动画停止工作。如果我按F5,它就会再次工作

\n\n

因此,如果我想使用导航栏,我必须刷新每个页面。

\n\n

你知道我能做什么来解决这个问题吗?

\n

javascript jquery ruby-on-rails turbolinks ruby-on-rails-4

2
推荐指数
1
解决办法
1521
查看次数

找不到'jquery'文件

这是我现在得到的错误:

Started GET "/" for 127.0.0.1 at 2014-08-29 06:37:21 -0500
  ActiveRecord::SchemaMigration Load (0.9ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Processing by PostsController#index as HTML
  Post Load (0.8ms)  SELECT "posts".* FROM "posts"   ORDER BY created_at desc
  Rendered shared/_color.html.erb (0.6ms)
  Rendered shared/_color.html.erb (0.1ms)
  Rendered shared/_color.html.erb (0.3ms)
  Rendered posts/index.html.erb within layouts/application (47.4ms)
Completed 500 Internal Server Error in 264ms

Sprockets::FileNotFound - couldn't find file 'jquery'
  (in /app/assets/javascripts/application.js:13):
Run Code Online (Sandbox Code Playgroud)

这是我的application.js,

//= require jquery    <--- This is Line 13
//= require jquery_ujs
//= require jquery-ui
//= …
Run Code Online (Sandbox Code Playgroud)

jquery ruby-on-rails turbolinks

2
推荐指数
1
解决办法
5974
查看次数

Rails:Tawk.to聊天插件和Turbolinks问题

嗨,我想将聊天插件Tawk.to集成到我的rails应用程序中,但是在他们提供的脚本中添加脚本将无法与Turbolinks一起使用,我还尝试将脚本添加到函数中并在.ready和页面上调用它:加载但它不起作用,这是原始脚本:

var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
  (function(){
  var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
  s1.async=true;
  s1.src='https://embed.tawk.to/API_KEY/default';
  s1.charset='UTF-8';
  s1.setAttribute('crossorigin','*');
  s0.parentNode.insertBefore(s1,s0);
  })();
Run Code Online (Sandbox Code Playgroud)

我在application.js文件中尝试了以下内容:

function tawk_chat(){
    var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
    (function(){
    var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
    s1.async=true;
    s1.src='https://embed.tawk.to/API_KEY/default';
    s1.charset='UTF-8';
    s1.setAttribute('crossorigin','*');
    s0.parentNode.insertBefore(s1,s0);
    })();
}

$(document).on("ready page:load", function() {
  tawk_chat();
});
Run Code Online (Sandbox Code Playgroud)

以上都行不通.如何在启用Turbolinks的情况下完成上述脚本的工作?

javascript chat ruby-on-rails turbolinks

2
推荐指数
1
解决办法
1146
查看次数

link_to 链接未在 Rails 中加载 javascript

在我的索引视图中,我有一个表(它使用 bootstrap 表排序 javascript 库对列进行排序)我正在使用 Rails 5。

所以现在当我点击 时 <%= link_to 'Products', products_path %>,javascript 没有加载,但是当我重新加载浏览器(ctrl + r)时,我看到表格排序开始工作。在查看 Chrome Developer 中的网络选项卡后,我可以看到这种情况发生,使用 link_to 看不到对 js 文件发出的任何请求,但当我重新加载时,js 文件可用。

我正在使用标准导轨结构

  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
Run Code Online (Sandbox Code Playgroud)

我的猜测是由于涡轮链接而发生了一些事情,但我无法弄清楚

jquery ruby-on-rails twitter-bootstrap turbolinks ruby-on-rails-5

2
推荐指数
1
解决办法
1370
查看次数

Turbolinks 5.0 和 Facebook SDK

上周我升级到使用 Turbolinks 5.0 的 Rails 5。我使用以下脚本通过 Turbolinks 3.0 加载 Facebook 点赞按钮:

fb_root = null
fb_events_bound = false

$ ->
  loadFacebookSDK()
  bindFacebookEvents() unless fb_events_bound

bindFacebookEvents = ->
  $(document)
    .on('page:fetch', saveFacebookRoot)
    .on('page:change', restoreFacebookRoot)
    .on('page:load', ->
      FB?.XFBML.parse()
    )
  fb_events_bound = true

saveFacebookRoot = ->
  fb_root = $('#fb-root').detach()

restoreFacebookRoot = ->
  if $('#fb-root').length > 0
    $('#fb-root').replaceWith fb_root
  else
    $('body').append fb_root

loadFacebookSDK = ->
  window.fbAsyncInit = initializeFacebookSDK
  $.getScript("//connect.facebook.net/nl_NL/all.js#xfbml=1")

initializeFacebookSDK = ->
  FB.init
    appId     : 'YOUR_APP_ID'
    channelUrl: '//WWW.YOUR_DOMAIN.COM/channel.html'
    status    : true
    cookie    : true
    xfbml     : …
Run Code Online (Sandbox Code Playgroud)

javascript facebook ruby-on-rails turbolinks

2
推荐指数
1
解决办法
1072
查看次数

在Rails中使用Turbolinks 5时,如何处理页面元素上的事件侦听器?

根据Turbolinks 自述文件,我们不应该在使用时直接在页面元素上设置事件监听器turbolinks:load:

如果可能,请避免使用turbolinks:load事件将事件侦听器直接添加到页面主体上的元素.相反,请考虑使用事件委派在文档或窗口上注册一次事件侦听器.

既然如此,有时你需要在个人元素上设置监听器.建议的方法是什么?使用不同的Turbolinks活动?别的什么?

ruby-on-rails turbolinks

2
推荐指数
1
解决办法
862
查看次数

无法取消绑定事件监听器 - turbolinks缓存出现问题

我绑定然后将ready事件侦听器解绑定到文档.

$(document).bind("ready", readyEventHandler);

function readyEventHandler() {
  // run some code

  $(document).unbind("ready");
}
Run Code Online (Sandbox Code Playgroud)

代码不会产生任何错误,并且会起作用.但是,我的javascript被缓存并复制了代码,所以如果我回去然后在浏览器中转发页面,我最终会运行这个代码不止一次.发生这种情况时,根本不会调用ready事件侦听器.我是否正确解除了此事件监听器的绑定?我知道缓存问题变得有问题(这是它自己的独立问题)但我只是想绑定ready事件监听器,让它运行代码,然后取消绑定它.

javascript jquery event-listener turbolinks

2
推荐指数
1
解决办法
436
查看次数