12

Tôi hơi bối rối về nơi đặt khung công tác jQuery như Galleria trong Đường ray 3.1 mới Đường ống tài sản?Nơi đặt Galleria (khung thư viện ảnh jQuery) trong Rails 3.1 Đường ống tài sản?

Tôi biết điều đó, về mặt kỹ thuật, nên đi vào /vendors/assets/javascriptsnhưng, nó là sự hiểu biết của tôi rằng, thư mục Galleria với các chủ đề jQuery & muốn trở thành trong root (/galleria) của các trang web trực tiếp để làm việc một cách chính xác.

Ngoài ra, trong khi chúng tôi đang ở đó, nơi để đặt tập lệnh sau để nó sẽ chỉ xuất hiện trên (các) trang có thư viện?

<script> 
    $('#gallery').galleria({ 
     width:500, 
     height:500 
    }); 
</script> 

Sửa: Ngạc nhiên không có phản ứng!?! Có lẽ Galleria không phải là phổ biến? Đây là những tập tin tôi đang cố tải. Chúng được đóng gói như thế này mặc dù tôi có thể dễ dàng di chuyển chúng:

vendor/ 
    assets/ 
    javascripts/ 
     galleria-1.2.5.js 
     galleria-1.2.5.min.js 
    galleria/ 
     themes/ 
     classic/ 
      classic-loader.gif 
      classic-map.png 
      galleria.classic.css 
      galleria.classic.js 
      galleria.classic.min.js 

tôi nghĩ Bánh răngrequire_tree . sẽ load tất cả mọi thứ trong app/assets, lib/assetsvendor/assets?!?

+0

Câu hỏi hay về mọi mặt. Xin lỗi tôi không biết câu trả lời cho họ. – Andrew

Trả lời

2

Tôi cũng tình cờ gặp vấn đề này. Chia một thư viện hiện có để nó phù hợp với cấu trúc javascripts/stylesheets hiện tại là một chút rắc rối. Do bạn có thể thêm một con đường thêm vào tập tin application.rb của bạn để tải nội dung từ, như thế này:

# Enable the asset pipeline 
    config.assets.enabled = true 
    config.assets.paths << "#{Rails.root}/app/assets/libs" 

Tạo một thư mục 'libs' dưới ứng dụng/tài sản, sao chép thư viện galleria vào thư mục này và thêm video này vào tệp bố cục ứng dụng của bạn:

<%= javascript_include_tag 'galleria/galleria-1.2.4.min.js' %> 
    <%= javascript_include_tag 'galleria/themes/classic/galleria.classic.min.js' %> 

Bạn cũng có thể kết hợp mã galleria bằng cách yêu cầu tệp js, nhưng tùy thuộc vào bạn.

22

Tôi gặp sự cố tương tự và phải mất một lúc để làm việc. Ban đầu, nó sẽ hoạt động tốt khi phát triển, nhưng khi chúng tôi chuyển sang sản xuất, Galleria âm thầm thất bại, do tên tập tin tài sản hiện có "dấu vân tay". Điều này cũng có vẻ là một vấn đề với các chủ đề giao diện người dùng jQuery và nhiều kịch bản khác như vậy. Tất nhiên, bạn có thể quay trở lại cách cũ để làm mọi thứ và ném mọi thứ vào "công khai", nhưng chúng tôi muốn tận dụng lợi thế của việc tự động hợp nhất tất cả các tệp css/js và làm mọi thứ theo đường ray.

Đây là cách tôi đã nhận nó làm việc:

vendor/ 
    assets/ 
    images/ 
     classic-loader.gif 
     classic-map.gif 
    javascripts/ 
     galleria-1.2.5.js 
     galleria.classic.js 
    stylesheets 
     galleria.classic.css.scss 

Đổi tên tập tin của bạn để galleria.classic.cssgalleria.classic.css.scss. Sau đó thay thế các tài liệu tham khảo hình ảnh, như vậy (tôi đã có hai):

url("classic-loader.gif") trở thành image-url("classic-loader.gif")

UPDATE: Có vẻ như bạn không cần phải làm điều này trong Rails 3.1.1. Chỉ cần đổi tên tệp thành .css.scss và đường ray sẽ tự động xử lý trước url() gọi cho bạn.

Trong file app/assets/javascripts/application.js của bạn, hãy chắc chắn bạn có các dòng

//= require galleria-1.2.5 
//= require galleria.classic 
//= require_tree . 

Trong bạn app/assets/stylesheets/application.css tập tin, đảm bảo bạn có các dòng

*= require galleria.classic 
*= require_tree . 

Cuối cùng, Galleria dường như có một số ưa thích không tải chuẩn css tích hợp. Đây là điều ngăn cản Galleria tải trên trang web sản xuất của chúng tôi. Vì chúng tôi đã bao gồm biểu định kiểu, chúng tôi muốn tắt hành vi này. Đơn giản chỉ cần mở ra galleria.classic.js (hoặc chủ đề Galleria của bạn javascript tập tin), và thay thế dòng:

css: 'galleria.classic.css', 

với:

css: false, 

này sẽ cho Galleria không thử tải stylesheet.

Một điều nữa - khi cố gắng biên dịch các nội dung này, tôi đã chạy vào nội dung rõ ràng là bug in Rails 3.1.0. Khi tôi chạy rake assets:precompile, tôi đã nhận lỗi như:

$ bundle exec rake assets:precompile 
rake aborted! 
classic-loader.gif isn't precompiled 
    (in /vendor/assets/stylesheets/galleria.classic.css.scss) 

câu chuyện dài ngắn, bạn cần phải thiết lập dòng này trong config/environments/production.rb:

config.assets.compile = true 

này không phải là cần thiết khi 3.1.1 được phát hành.

+2

Tôi không thích thay đổi mã thư viện, tức là thay đổi 'url (...)' thành 'image-url (...)'. Tôi sẽ cố gắng để họ ở trong thư mục công cộng. – crispy

+0

Không, nhưng có vẻ như việc thay đổi mã thư viện là cách duy nhất để có được những lợi ích tuyệt vời của đường dẫn nội dung Rails 3.1. –

+0

Có bất kỳ lợi ích tuyệt vời nào cho hình ảnh được tham chiếu trong bảng định kiểu không? Vân tay ...? – crispy

3

Tôi thích gợi ý của Arjen, mặc dù tôi nghĩ rằng vendor/assets/libs phù hợp hơn. Đây là thiết lập của tôi:

Trong config/application.rb

config.assets.enabled = true 
config.assets.paths << "#{Rails.root}/vendor/assets/libs" 

Trong ứng dụng/tài sản/Javascripts/application.js

//= require galleria/galleria-1.2.6.min.js

Để khởi tạo:

Galleria.loadTheme('assets/galleria/themes/classic/galleria.classic.min.js'); 
$('#gallery').galleria(); 

Lưu ý cách đường dẫn được chuyển đến loadTheme() bắt đầu bằng 'a ssets '.

Tôi thích thiết lập này vì nó giữ nguyên thư mục galleria. Ngoài ra, nó kết hợp galleria-1.2.6.min.js vào tệp js chính của tôi (một yêu cầu ít hơn http).

+0

Tôi cũng đã thử giải pháp này, nhưng những gì làm việc trong các giai đoạn phát triển trong sản xuất. Tôi có thể thử loadTheme ('asset/gall ...') hoặc loadTheme ('/ assets/gall ...') hoặc bất cứ thứ gì, nó sẽ không tìm thấy chủ đề. Tất cả những gì tôi nhận được là: Lỗi nghiêm trọng: Chủ đề tại tài sản/galleria/themes/classic/galleria.classic.min.js không thể tải, hãy kiểm tra đường dẫn chủ đề –

+0

@KarstenS. Các cài đặt tôi đề xuất áp dụng cho tất cả các cấp sản xuất. Hãy thử tìm kiếm sự khác biệt giữa dev và prod của bạn, đặc biệt trong cấu hình đường dẫn nội dung của bạn. –

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