2013-06-29 6 views
5

Tôi tin rằng jQuery không hoạt động trên các trang khác so với trang bạn vừa cài đặt. Ví dụ, khi tôi gõ localhost: 3000 /, trong thư mục '/' tất cả các công trình jQuery. Nhưng khi tôi nhấp vào liên kết được tạo bởi Rails làRails Jquery không hoạt động trên các trang khác

<%= link_to "Example Link", news_path %> 

Trang này tải đúng cách, nhưng jQuery không hoạt động. mã jQuery của tôi được như đã nêu:

$(function() { 
    console.log("pageloaded"); 
    .... 
    $('.up').click(function(){ 
    ..... 
    }); 
}); 
+1

nhấp chuột phải vào trình duyệt của bạn> kiểm tra phần tử> bảng điều khiển .. đăng ở đây thông báo lỗi. –

+0

Không có bất kỳ thông báo lỗi nào. Nhưng jQuery không được tải. – Yagiz

+1

bạn đang sử dụng phiên bản Rails nào? Trong Rails 4, 'turbolinks' được kích hoạt theo mặc định và điều đó có nghĩa là trang mới được nạp động và không có $ (tài liệu) .ready được kích hoạt. Điều gì sẽ xảy ra nếu bạn tải thủ công localhost: 3000/news –

Trả lời

11

Trong Rails 4 turbolinks được kích hoạt theo mặc định.
Điều đó có nghĩa là $(document).ready() không được thực thi khi bạn tải trang mới.

turbolink kích hoạt sự kiện mới page:load. Bạn có thể sử dụng để chạy mã javascript của bạn:

$(document).on('page:load', your_start_function); 

Có một xuất sắc rails cast on turbolinks

+0

+1 và nếu bạn muốn tắt liên kết turbo :) - http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4 – house9

+0

Thực ra, có đá quý được gọi là " jquery.turbolinks "liên kết trang: tải sự kiện với sự kiện sẵn sàng jquery – Yagiz

0

Bạn cần gem 'jquery-rails' trong Gemfile của bạn (sau đó cụm được cài đặt nếu bạn đang sử dụng bundler)

Khi đã xong, bạn cần phải yêu cầu nó trong tập tin application.js của bạn:

//= require jquery 

Cuối cùng, bạn cần đảm bảo rằng tệp application.js được tải như một phần của mẫu ứng dụng. Trong application.html.erb bạn nên có những điều sau đây:

<%= javascript_include_tag "application" %> 

Tôi tin rằng đây là tất cả những gì theo mặc định trong một Rails cài đặt vì vậy nếu bạn đã gỡ bỏ bất kỳ các thiết lập này, bạn sẽ cần phải thêm chúng lại để có được nó để làm việc .

+0

đá quý jquery rails được cài đặt đúng và chức năng jquery tốt trên trang đầu tiên. – Yagiz

2

https://github.com/kossnocorp/jquery.turbolinks

đá quý này liên kết với jQuery.ready chức năng với Turbolinks nghe trang sự kiện: tải, do đó giải pháp là phải được giải quyết nếu bạn đang sử dụng Turbolinks với Rails 4