这在使用Ruby 2.3.1的Rails 5应用程序中发生。更改下拉列表时,我想通过ajax请求收集更多信息,以显示在下拉列表下方。此功能有效,但仅限于我加载或刷新页面。
应用程序/资产/ Javascript角/ 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..
资产/ Javascript角/ application.js中
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require_tree .
刷新页面时,会显示并显示信息。但是,如果我离开页面并导航回来,则不再触发javascript函数。
通过下面提供的答案解决了上述问题。该行为是由Turbolinks引起的,解决方案是:
$(document).ready initGuideline
$(document).on 'ready turbolinks:load', initGuideline
答案 0 :(得分:1)
由于涉及turbolinks,请尝试加载page:change
而不是ready
OR
试
$(document).on 'ready turbolinks:change turbolinks:load'
答案 1 :(得分:1)
这应该适用于Rails 4,但对于Rails 5(使用turbolinks 5),您需要使用turbolinks:load
而不是page:load
。
$(document).ready initGuideline
$(document).on 'ready turbolinks:load', initGuideline
请按this thread了解详情。
答案 2 :(得分:0)
其实你只需要:
$(document).on 'turbolinks:load', initGuideline
无需聆听准备,因为 turbolinks:load 已准备就绪