Я пытаюсь найти лучший способ воспроизвести wav-файл в фоновом режиме (HTML5-подобный), когда я использую тег link_to в Rails.Rails link_to и audio_tag
Вот пример link_to от одного из моих взглядов:
<%= link_to 'At Station', at_station_mdt_index_path, :class => 'btn btn-success btn-medium', :method => :put, :remote => true %>
Я хотел бы, чтобы выяснить, как использовать audio_tag, чтобы вызвать звук при нажатии кнопки. Я попытался объединить audio_tag в link_to ERB, но получить всевозможные синтаксические ошибки.
Любые примеры были бы весьма признательны.
Обновлено 01/04/14-10: 18am CT: Звуки срабатывают один раз и правильно. Однако, так как добавление: идентификатор в link_to ссылки больше не вызывают путь рельсы, чтобы изменить объект, только воспроизводит звук
Просмотр кода:
<%= link_to 'En Route', en_route_mdt_index_path(:call_id => call.id), :class => 'btn btn-warning btn-medium', :method => :put, :remote => true, :id => "er" %>
<%= link_to 'On Scene', on_scene_mdt_index_path(:call_id => call.id), :id => 'to', :class => 'btn btn-primary btn-medium', :method => :put, :remote => true, :id => "os" %>
<%= link_to 'To Hospital', to_hospital_mdt_index_path(:call_id => call.id), :class => 'btn btn-warning btn-medium', :method => :put, :remote => true, :id => "to" %>
<audio id="en-route" class="audio_player" preload="true">
<source src="audios/en-route.wav" type="audio/wav">
</audio>
<audio id="on-scene" class="audio_player" preload="true">
<source src="audios/on-scene.wav" type="audio/wav">
</audio>
<audio id="to-hospital" class="audio_player" preload="true">
<source src="audios/to-hospital.wav" type="audio/wav">
</audio>
<script>
$('#er').click(function (e) {
e.preventDefault();
$('#en-route')[0].currentTime = 0;
$('#en-route')[0].play();
return true;
});
$('#os').click(function (e) {
e.preventDefault();
$('#on-scene')[0].currentTime = 0;
$('#on-scene')[0].play();
return true;
});
$('#to').click(function (e) {
e.preventDefault();
$('#to-hospital')[0].currentTime = 0;
$('#to-hospital')[0].play();
return true;
});
</script>
Это действительно работает. Однако после того, как мои частичные обновления обновляются через Javascript, ссылка больше не работает. Он будет работать только после перезагрузки всей страницы. Моя функция JS обновляет частичные значения каждые 10 секунд, чтобы вытащить новые данные, так как это приводит к тому, что звуковой тег не загружается. Только на странице обновления. – nulltek
В вашем вопросе вы получили сообщение об ошибке application.js. Это означает, что вы поместите свой скрипт в один из файлов js в активах. И я предполагаю, что вы загрузите application.js в макет. При частичной перезагрузке элементы DOM заменяются. Событие click необходимо связать снова с новыми элементами DOM. Но ваш скрипт загружается только один раз, поэтому он не работает. Есть два способа исправить это: (1) поместить скрипт в частичное, чтобы он перезапускался каждый раз при повторной загрузке страницы, или (2) после перезагрузки страницы вы вызываете функцию для привязки событий сам. –
Я попытался переместить аудио-элемент и javascript в частичный. Даже с соответствующими идентификационными элементами, дифференцирующими две ссылки, любая ссылка на странице вызывает оба звука. Также, когда javascript index.html.erb перезагружается каждые 10 секунд, он одновременно воспроизводит оба звука. Я вставил свой текущий код, чтобы вы могли посмотреть. – nulltek