Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Javascript函数仅在页面刷新时触发_Ruby On Rails_Ajax_Coffeescript_Ruby On Rails 5_Turbolinks - Fatal编程技术网

Ruby on rails Javascript函数仅在页面刷新时触发

Ruby on rails Javascript函数仅在页面刷新时触发,ruby-on-rails,ajax,coffeescript,ruby-on-rails-5,turbolinks,Ruby On Rails,Ajax,Coffeescript,Ruby On Rails 5,Turbolinks,这发生在使用Ruby 2.3.1的Rails 5应用程序中。当下拉列表更改时,我希望通过ajax请求收集更多信息,以显示在下拉列表下方。此功能有效,但仅当我加载或刷新页面时有效 app/assets/javascripts/articles.coffee initGuideline = -> $('#article_theme_id').on 'change', (event) -> $.ajax url: "/themes/guideline",

这发生在使用Ruby 2.3.1的Rails 5应用程序中。当下拉列表更改时,我希望通过ajax请求收集更多信息,以显示在下拉列表下方。此功能有效,但仅当我加载或刷新页面时有效

app/assets/javascripts/articles.coffee

initGuideline = ->
  $('#article_theme_id').on 'change', (event) ->
    $.ajax
      url: "/themes/guideline",
      type: "GET",
      format: 'js',
      data: {
        theme_id: $("#article_theme_id").val()
      }
$(document).ready initGuideline
$(document).on 'ready page:load', initGuideline
下拉列表的格式是部分的,
views/articles/_fields.html.slim
,它是从
views/articles/new.html.slim
views/articles/edit.html.slim
调用的

Gemfile

source 'https://rubygems.org'
gem 'rails', '~> 5.0.1'
gem 'sqlite3'
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'bootstrap-sass'
gem 'devise'
gem 'slim'
gem 'pundit'
gem 'will_paginate'
and other gems..
assets/javascripts/application.js

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require_tree .
当我刷新页面时,信息会被过滤并显示出来。但是,如果我离开页面并向后导航,javascript函数将不再触发

下面给出的答案解决了上述问题。这种行为是由TurboLink引起的,解决方案是:

$(document).ready initGuideline
$(document).on 'ready turbolinks:load', initGuideline

发生这种情况是因为TurboLink,请尝试加载
页面:更改
而不是
就绪

试一试


发生这种情况是因为TurboLink,请尝试加载
页面:更改
而不是
就绪

试一试


这在Rails 4上应该可以正常工作,但是对于Rails 5(使用turbolinks 5),您需要使用
turbolinks:load
而不是
page:load

$(document).ready initGuideline
$(document).on 'ready turbolinks:load', initGuideline

请遵循了解更多详细信息。

这在Rails 4上应该可以正常工作,但是对于Rails 5(使用turbolinks 5),您需要使用
turbolinks:load
而不是
page:load

$(document).ready initGuideline
$(document).on 'ready turbolinks:load', initGuideline

请按照下面的说明了解更多详细信息。

实际上,您只需要:

$(document).on 'turbolinks:load', initGuideline

无需监听就绪,因为TurboLink:load在就绪时启动

实际上您只需要:

$(document).on 'turbolinks:load', initGuideline

无需监听ready,因为turbolinks:load在ready

上触发,在以下更改后,结果仍然相同:$(文档)。ready initGuideline$(文档)。在“page:change”上,initguidelinet在以下更改后,结果仍然相同:$(文档)。ready initguidelinet$(文档).在“第页:更改”中,InitGuideline上述更改提供了正确的行为。谢谢你。以上的改变提供了正确的行为。谢谢你