Ruby on rails Javascript函数仅在页面刷新时触发
这发生在使用Ruby 2.3.1的Rails 5应用程序中。当下拉列表更改时,我希望通过ajax请求收集更多信息,以显示在下拉列表下方。此功能有效,但仅当我加载或刷新页面时有效 app/assets/javascripts/articles.coffeeRuby 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",
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上述更改提供了正确的行为。谢谢你。以上的改变提供了正确的行为。谢谢你