2011-12-06 23 views
11

Hầu hết đường ray 3.1 hướng dẫn về đường ống nội dung và tạo khuôn mẫu javascript dẫn tôi tin rằng đường ống nội dung sẽ nhận bất kỳ tệp * .jst nào và chèn chúng vào biến JST có sẵn cho * .js của bạn các tập tin. Tuy nhiên, tôi đang bối rối với lỗi sau khi tôi cố gắng tải một * .jst mẫu:JST chưa được xác định cho đường ray 3.1 Ứng dụng

Uncaught ReferenceError: JST is not defined

Bất kỳ con trỏ?

Trả lời

7

Biến JST dường như được thiết lập nếu bạn một cách chính xác bao gồm các mục mẫu javascript trong tập tin app/assets/application.js của bạn để họ có thể được đưa vào thông qua các đường ống dẫn tài sản:

//= require templates/your_template.jst

Sau đó include template javascript trong tương ứng của bạn chế độ xem đường ray (sử dụng haml):

- content_for :javascripts do 
    = javascript_include_tag "templates/your_template" 
+2

Tại sao bạn yêu cầu mẫu/your_template.jst trong tệp kê khai của mình nhưng sau đó sử dụng javascript_include_tag trên cùng một tệp? Khi bạn yêu cầu your_template.jst trong tệp kê khai application.js, bạn chỉ cần 'javascript_include_tag' application'' được thực hiện theo mặc định. – tybro0103

2

Âm thanh như bạn cần EJS Gem, được bao gồm nếu bạn sử dụng Đá quý đường ray.

Sau đó, bạn chỉ cần tạo một tập tin như ứng dụng/tài sản/Javascripts/foobar.jst.ejs và nó có thể được trả lại bằng cách gọi

JST['foobar']()

Hy vọng rằng sẽ trả lời câu hỏi của bạn.

+0

Cảm ơn. Câu trả lời của bạn chính xác là những gì tôi đang tìm kiếm. BTW, nếu có ai gặp rắc rối với đường dẫn, bạn có thể kiểm tra đối tượng JST trong giao diện điều khiển và nó sẽ liệt kê tất cả các mẫu đã biết. – Alric

23

nếu bạn đang sử dụng một dòng yêu cầu như

// = require_tree ../templates

đảm bảo dòng đó là trên dòng bao gồm bất cứ tập tin được tạo cho bạn lỗi.

7

Tất cả các câu trả lời khác đang nhận được lúc này, nhưng để làm rõ ...

JST không được xác định bởi sprockets trừ khi một hoặc .jst nhiều file đã được yêu cầu trong biểu hiện.

Vì vậy, ngay cả khi bạn có //= require_tree ../templates trong tệp kê khai, JST sẽ vẫn không được xác định cho đến khi bạn tạo ít nhất một tệp .jst trong thư mục mẫu.

Ngoài ra hãy chắc chắn bao gồm đá quý EJS. Nếu bạn đã bao gồm backbone-on-ray, bạn đã có nó rồi.

+0

Đây chính là vấn đề. Bạn cần có một số tệp như templates/dummy.jst.ejs – Ziggy

0

Có vẻ như JST không liên quan gì đến Backbone hoặc Underscore, nó được thực hiện bằng back-end và sẽ dẫn đến đối tượng JST và hàm JST trong các trang đầu của bạn.

Các vấn đề liên quan