Дополнительно
Рельсы в JavaScript работает только после перезагрузки
Проблема-это именно то, что заголовок говорит. JavaScript находится в трубопроводе актив.е активы/скрипты/мой_файл.Яш.кофе в application.js у меня есть:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require jquery.ui.all
//= requier twitter/bootstrap
//= require jasny-bootstrap
//= require_tree .
Это в CoffeeScript
$(document).ready ->
$("#close").click ->
$(this).parent().parent().slideUp("slow")
$( "#datepicker" ).datepicker
dateFormat : "yy-mm-dd"
player_count = $("#player option").length
$('#btn-add').click ->
$('#users option:selected').each ->
if player_count >= 8
$('#select-reserve').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
else
$('#player').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
player_count++
$('#btn-remove').click ->
$('#player option:selected').each ->
$('#users').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
player_count--
$('#btn-remove-reserve').click ->
$('#select-reserve option:selected').each ->
$('#users').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
$(this).remove()
$("#submit").click ->
$("select option").prop("selected", "selected")
Я вижу в исходном коде в браузере, что JavaScript был загружен, но он работает только после того, как я перезагрузить страницу.
53
8
Для turbolinks 5.0 вы должны использовать turbolinks:нагрузка событие, которое называется в первый раз при загрузке страницы, и каждый раз по сайту turbolink посетить. Подробнее: https://github.com/turbolinks/turbolinks#running-javascript-when-a-page-loads
Код CoffeeScript:
Код JavaScript:
Это было проблемой turbolinks. Спасибо @zwippie для ведет меня в правильном направлении! Решение было обернуть мой код CoffeeScript в этом:
Я думаю, это вопрос turbolinks.
Либо удалить turbolinks от вашего проекта или модифицировать ваш скрипт что-то вроде:
Как сказано здесь.
Вы можете установить в jQuery.turbolinks камень, чтобы решить проблему, не меняя ваш JavaScript.
Вы можете иметь ваш проект.сайту turbolink месте в нужное положение, как это
И в Gemfile вы можете установить в jQuery-turbolinks камень
Рельсы 5 Использует jQuery.turbolinks Gem и используя
Если вы работаете с jQuery плагины, такие как время выбора, Во-первых, использовать jQuery документ готов функция, которая вызывает скрипт, чтобы ждать, пока вся страница загрузится, прежде чем пытаться выполнить, а затем вы можете использовать turbolinks:загружайте событие. </п>
Это хорошо, чтобы быть расположен в файле
приложение/активов/скрипты/... Яш
Я'м пытаясь рельсы 5.2 и нашли, что'turbolinks:загрузить' была'т, как он напивался в первый раз, когда страница загружается. Это то, что мне нужно делать в моем файл CoffeeScript.