2012-03-08 34 views
8

Tôi có các tệp này trong thư mục lib/asset của mình (sketchyPad là một plugin jQuery để vẽ trên vải html5 và farbastic là bộ chọn màu được sử dụng bởi sketchyPad) :cách để chỉ định đường dẫn đến tệp js trong lib/asset bằng cách sử dụng đường dẫn 3.2 tài sản

lib/ 
|-- assets 
| |-- javascripts 
| | `-- lib.js 
| `-- sketchyPad 
|  |-- README.md 
|  |-- brushes 
|  | |-- simple.js 
|  | `-- smooth.js 
|  |-- example 
|  | |-- index.html 
|  | |-- jquery-ui-1.8.16.custom 
|  | | |-- css 
|  | | | `-- ui-lightness 
|  | | |  |-- images 
|  | | |  | |-- ui-bg_diagonals-thick_18_b81900_40x40.png 
|  | | |  | |-- ui-bg_diagonals-thick_20_666666_40x40.png 
|  | | |  | |-- ui-bg_flat_10_000000_40x100.png 
|  | | |  | |-- ui-bg_glass_100_f6f6f6_1x400.png 
|  | | |  | |-- ui-bg_glass_100_fdf5ce_1x400.png 
|  | | |  | |-- ui-bg_glass_65_ffffff_1x400.png 
|  | | |  | |-- ui-bg_gloss-wave_35_f6a828_500x100.png 
|  | | |  | |-- ui-bg_highlight-soft_100_eeeeee_1x100.png 
|  | | |  | |-- ui-bg_highlight-soft_75_ffe45c_1x100.png 
|  | | |  | |-- ui-icons_222222_256x240.png 
|  | | |  | |-- ui-icons_228ef1_256x240.png 
|  | | |  | |-- ui-icons_ef8c08_256x240.png 
|  | | |  | |-- ui-icons_ffd27a_256x240.png 
|  | | |  | `-- ui-icons_ffffff_256x240.png 
|  | | |  `-- jquery-ui-1.8.16.custom.css 
|  | | `-- js 
|  | |  `-- jquery-ui-1.8.16.custom.min.js 
|  | |-- jquery.min.js 
|  | `-- mattfarina-farbtastic-4bb6bbf 
|  |  |-- CHANGELOG.html 
|  |  |-- LICENSE.txt 
|  |  |-- README.html 
|  |  |-- README.md 
|  |  |-- demo1.html 
|  |  |-- demo2.html 
|  |  |-- farbtastic.css 
|  |  |-- farbtastic.js 
|  |  |-- farbtastic.min.js 
|  |  |-- marker.png 
|  |  |-- mask.png 
|  |  `-- wheel.png 
|  |-- sketchyPad.css 
|  `-- sketchyPad.js 

Vì vậy, tôi muốn bao gồm sketchyPad.js, sketchyPad.css và cũng tất cả các js trong các mẫu cọ thư mục và cũng file farbtastic.min js.

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

//= require sketchyPad (this part works fine and correctly includes sketchyPad.js) 

nhưng tôi cũng muốn bao gồm

lib/assets/sketchyPad/brushes/simple.js 
lib/assets/sketchyPad/brushes/smooth.js 

và các tập tin bất kỳ js khác trong thư mục bàn chải, làm cách nào để sử dụng require_directory khi nó không có trong ứng dụng/tài sản nhưng trong lib/asset hoặc vendor/asset?

Cập nhật:

Tôi đã thử

require_tree sketchyPad 

nhưng lỗi với:

require_tree argument must be a relative path 

Tôi đã thử

require_tree ./sketchyPad 

nhưng lỗi với:

0.123.
require_tree argument must be a directory 

Tôi nghĩ require_tree phải tương đối so với thư mục app/tài sản, nhưng đặt một cái gì đó giống như

require_tree ./../lib/assets/sketchyPad/brushes 

cũng cho lỗi:

luận require_tree phải là một thư mục

Eitherway tôi không muốn bao gồm toàn bộ cây sketchyPad, vì nó chứa một số tệp js mà tôi không muốn bao gồm ... như các ví dụ và đó là phiên bản riêng của jQuery cũ hơn.

UPDATE:

Những gì tôi đã kết thúc làm đã tạo ra một lib.js trong lib/tài sản/Javascripts thư mục với một biểu hiện bao gồm các file sketchyPad js như tương đối so với thư mục lib/tài sản thư mục chứ không phải ứng dụng/thư mục tài sản.

trong ứng dụng/tài sản/Javascripts/application.js tôi đặt:

//= require jquery 
//= require jquery_ujs 
//= require jquery-ui 
//= require lib 

và trong lib/tài sản/Javascripts/lib.js tôi đặt:

//= require ./../sketchyPad/sketchyPad 
//= require_tree ./../sketchyPad/brushes 
//= require ./../sketchyPad/example/mattfarina-farbtastic-4bb6bbf/farbtastic.min 

Đó dường như bao gồm các các tệp chính xác. Có cách nào dễ hơn để làm việc này không?

+0

Câu hỏi: tệp mà bạn muốn đặt chỉ thị nhập ở đâu? –

Trả lời

2

lẽ:

//= require_tree ./sketchyPad 
+0

không, có lỗi "đối số require_tree phải là đường dẫn tương đối" (xem các cập nhật của tôi) – Homan

+1

Phiên bản đã chỉnh sửa như thế nào? Ồ, đừng bận tâm - Tôi thấy ví dụ này trong bản cập nhật của bạn. –

2

Không cần phải tạo/thay đổi biểu hiện, chỉ cần thêm dòng sau vào application.rb

config.autoload_paths += %W(#{config.root}/lib) 
config.autoload_paths += Dir["#{config.root}/lib/**/"] 
1

Các Rails cách (theo this answer mà làm việc cho tôi) sẽ được tạo tệp index.js trong lib/assets/sketchyPad chỉ với

//= require_tree . 

Mặc dù có vẻ như trình cắm này khá rộng, vì vậy tôi tưởng tượng bạn phải chia nhỏ nó hơn nữa thành các thư mục con.

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