Vì vậy, tôi gặp vấn đề với ứng dụng rails4 đầu tiên của tôi nơi javascript trang của tôi không kích hoạt trừ khi tôi tải lại trang.Rails 4 ứng dụng ... trong môi trường phát triển javascript không kích hoạt trừ khi trang được làm mới
Điều này đúng cho cả JS nội dung đường ống nội dung của tôi và cũng có nội tuyến với content_for JS.
trong tập tin /assets/javascripts/cars.js tôi:
$(function(){
$("#car_car_make_id").on("change", function(){
//SET MODELS
$.ajax({
url: "/car_makes/" + $(this).val() + "/car_models",
type: "GET",
dataType: "json",
cache: false
})
.done(function(data) { model_list(data) })
.fail(function() { alert("error"); })
});
});
function model_list(data) {
$("#car_car_model_id").empty();
$.each(data, function(i,v){
$("<option />").val(v.id).text(v.name).appendTo("#car_car_model_id");
});
//ON COMPLETE SHOW
$("#car_model_div").show();
}
inline trong trang với content_for:
<% content_for :head do %>
<script type="text/javascript">
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('yt_vid', {
height: '390',
width: '640',
videoId: '<%= @timeslip.youtube_id %>'
});
}
</script>
<% end %>
Cả hai lửa chỉ khi tôi làm mới trang.
Ví dụ: nếu tôi nhấp vào liên kết tới trang có video trên youtube, video sẽ không tải. nhưng nếu tôi làm mới nó sẽ. Cùng với kịch bản đường dẫn nội dung, nó chỉ thực hiện cuộc gọi ajax của tôi nếu tôi tải lại trang đầu tiên.
Tôi đã vô hiệu hóa turbolinks và điều đó đã gây ra sự cố. Tuy nhiên, tôi nghĩ rằng đó có thể không phải là giải pháp tốt nhất cho vấn đề. Tôi sẽ nghiên cứu sâu hơn và xem liệu có cách nào để làm cho mã của tôi hoạt động với turbolinks hay không. cảm ơn bạn –
Tôi đã kết thúc việc thử thêm đá quý jquery.turbolinks rồi thêm nó vào tệp kê khai JS. Điều này đã sửa lỗi tập lệnh sẵn sàng cho tài liệu. Tuy nhiên, điều này vẫn không làm cho content_for javascript hoạt động. Vì vậy, sau đó tôi di chuyển content_for của tôi để viết bên trong thẻ body, tuy nhiên, điều này vẫn không giải quyết được vấn đề content_for. Tôi đã kết thúc trở lại để vô hiệu hóa turbolinks –
Tại sao bạn cần đưa javascript vào content_for? Tại sao không sử dụng đường dẫn nội dung và cho phép bộ nhớ cache của trình duyệt tất cả javascript cùng một lúc? – Almaron