2012-04-10 24 views
9

Tôi đang triển khai ứng dụng Rails 3.2 cho Heroku. Tôi đang biên dịch trước các tài sản cục bộ theo https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar.Tại sao Heroku trở lại 'devise/sessions.js không được biên dịch trước'?

Nhưng tôi nhận được

ActionView::Template::Error (devise/sessions.js isn't precompiled): 

Đã có người khác gặp phải điều này?

Cách chính xác để đảm bảo Bản lược thảo của Devise là gì.

Cảm ơn!

+0

Bạn có trên tuyết tùng chồng? – sethvargo

+0

Hi sethvargo. vâng tôi đang ở trên Cedar –

Trả lời

6

Cảm ơn tất cả các đề xuất. Sau một chút suy nghĩ, tôi nhận ra rằng vấn đề đã giảm xuống cách ứng dụng được định cấu hình để gọi javascript dành riêng cho bộ điều khiển. Trong trường hợp bất kỳ ai khác gặp vấn đề này, đây là những gì tôi đã làm.

Tôi đã tải tệp .js cụ thể cho bộ điều khiển thông qua thẻ sau trong tệp bố cục.

<%= javascript_include_tag "application", params[:controller] %> 

Sự cố là, điều này không thành công nếu tệp cotroller.js cụ thể không tồn tại. Trong trường hợp của tôi, trang đăng nhập không thành công vì tôi đã không tạo tệp devise/sessions.js.

Tôi có thể đã tạo tệp này, nhưng tôi cảm thấy đây là một cách tiếp cận lộn xộn. Tôi không thích ý tưởng có nhiều tệp trống nằm xung quanh.

Thay vào đó tôi kêu gọi một cách rõ ràng javascripts điều khiển cụ thể từ quan điểm

<% javascript 'controller.js' %>  

Sử dụng helper sau trong application_helpers

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

vẻ khi được làm việc tốt cho đến nay.

Cảm ơn bạn một lần nữa vì đã đề xuất.

+3

Đối với những người quan tâm đến việc tiếp cận thêm tệp js, bạn có thể tạo thư mục 'devise' trong' app/assets/javascripts', sau đó đặt tệp 'sessions.js' vào đó. Tiện dụng nếu bạn muốn tạo trang đăng nhập. Lưu ý: Bạn cần liệt kê các tài sản được truy cập riêng lẻ: http://stackoverflow.com/questions/7425929/rails-3-1-strategy-for-pre-compiling-controller-specific-js-assets – brookr

+0

Cảm ơn bạn rất nhiều, điều này là câu trả lời tôi đã tìm kiếm hàng giờ! –

3

Thử chạy rake assets:precompile.


Hãy thử thêm này để cấu hình bạn/môi trường/production.rb:

config.assets.precompile += %w(*.css *.js) 

Hoặc chỉ định tập tin của bạn.

+0

Xin chào Justin D. Tôi đánh giá cao câu trả lời của bạn, cảm ơn rất nhiều. Điều này nên đã làm việc (có thể đã làm việc, nếu tôi đã tạo tập tin cần thiết .js), nhưng sau khi suy nghĩ về vấn đề này qua đêm, tôi nhận ra vấn đề là do làm thế nào tôi đã gọi javascripts điều khiển cụ thể. Tôi đã thêm một câu trả lời để giúp những người khác có thể gặp phải vấn đề tương tự. –

5

Giải pháp của tôi:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %> 
Các vấn đề liên quan