2010-08-16 4 views
27

Cách chính xác để định tuyến yêu cầu của bạn thông qua Sinatra để nó phục vụ tệp không xử lý là gì? Tôi đang tìm cách phổ biến nhất mọi người làm điều này trong khuôn khổ Sinatra? Tôi thường đặt tất cả nội dung tĩnh của mình trong đường dẫn "nội dung".Ruby/Sinatra - phân phát các tệp css, javascript hoặc hình ảnh

ví dụ:
/content/css
/content/img
/content/js

Làm thế nào tôi có thể sử dụng một ký tự đại diện để phục vụ tất cả mọi thứ dưới nội dung?

Tôi rất ngạc nhiên không có ví dụ thực tế điều này ở đây:
http://sinatra-book.gittr.com/

Trả lời

51

Sinatra và Rails sử dụng đường dẫn public cho nội dung tĩnh - ví dụ, ./public/javascripts/. Sau đó, tất cả các tệp trong các đường dẫn này sẽ được máy chủ web phân phối (ví dụ: Thin, Passenger), nhưng không cần /public trong URL (ví dụ: tệp tại #{my_app_root}/public/javascripts/application.js sẽ có sẵn qua Web tại URL http://#{my_domain}/javascripts/application.js).

+2

vì vậy thư mục công khai này sẽ nằm bên cạnh thư mục lượt xem của tôi - ở cùng cấp ngang hàng? tôi sẽ học những thứ như thế này trên web ở đâu? bất kỳ trang web ref tốt nào bạn có thể chỉ cho tôi? +1 – BuddyJoe

+0

http://www.sinatrarb.com/intro.html – yfeldblum

+0

Không chắc tôi đã bỏ lỡ điều đó như thế nào. Cảm ơn. – BuddyJoe

7
get '/notes/images/:file' do 
    send_file('/root/dev/notes/images/'+params[:file], :disposition => 'inline') 
end