Это происходит в приложении Rails 5 с Ruby 2.3.1. Когда выпадающий список изменен, я хочу собрать дополнительную информацию через запрос ajax для отображения ниже раскрывающегося списка. Эта функциональность работает, но только если я загружаю или обновляю страницу.Функция Javascript активируется только при обновлении страницы
приложение/активы/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..
активы/JavaScripts/application.js
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require_tree .
При обновлении страницы информация fecthed и отображается. Но если я перейду от страницы и вернусь назад, функция javascript больше не будет запущена.
Вышеупомянутая проблема решена путем предоставления ответа ниже. Поведение вызвано Turbolinks и раствор:
$(document).ready initGuideline
$(document).on 'ready turbolinks:load', initGuideline
После следующего изменения, результаты остались прежними: $ (document) .ready initGuideline $ (document) .on 'page: change', initGuideline – user3724786