2010-02-06 19 views
7

Tôi đang cố gắng truy cập:tôi không thể phục vụ hình ảnh tĩnh trên Ruby on Rails

http://localhost:3000/images/Header.png 

nhưng tôi tiếp tục nhận được lỗi này:

Routing Error 

No route matches "/images/Header.png" with {:method=>:get} 

Và đây là tuyến đường của tôi:

ActionController::Routing::Routes.draw do |map| 
    map.resources :worker_antpile_statuses 

    map.resources :worker_antpiles 

    map.resources :antcolonies 

    map.resources :antpiles 

    map.resources :clients 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 
end 
+3

tại sao wiki cộng đồng này lại là? – Nate

Trả lời

1

Hai dòng cuối cùng của routes.rb là các tuyến bắt tất cả sẽ khớp với bất kỳ URL chưa từng có nào trước đây. Nhận xét hai dòng đó và nó sẽ hoạt động, đó là những gì bạn muốn làm khi bạn sử dụng định tuyến RESTful trong tất cả các ứng dụng của bạn.

Xem this excellent guide cho tất cả những gì bạn cần biết về tuyến đường Rails.

+0

Điều đó không đủ để phục vụ các tệp tĩnh trong Rails 3. :( – mcandre

15

Nội dung tĩnh cần phải nằm trong thư mục công khai hoặc nếu không bạn sẽ gặp phải lỗi định tuyến. Để có hình ảnh tĩnh tại http://localhost:3000/images/Header.png bạn muốn đặt Header.png trong RAILS_ROOT/public/images

Khi được cung cấp bất kỳ url nào, Rails sẽ kiểm tra tệp hiện có tại đường dẫn từ RAILS_ROOT/thư mục công cộng trước khi tìm cách khớp với bất kỳ tuyến đường nào.

Ví dụ: khi máy chủ Rails nhận được yêu cầu http://localhost:3000/users/1, nó sẽ cố gắng gửi nội dung của RAILS_ROOT/public/users/1. Nếu không có tệp nào, tuyến đường trùng khớp thường xuyên sẽ bắt đầu.

+0

Điều đó có hiệu quả! CẢM ƠN ĐÃ GIÚP ĐỠ. Vì vậy, mục đích của thư mục hình ảnh bên dưới công cộng là gì? – sam

+0

Vâng, tôi có nghĩa là bất cứ nơi nào bên trong/công cộng./public/images là tốt. Bạn có một hình ảnh trong/public/images, nhưng nó không tải khi bạn GET địa chỉ chính xác của nó, phân biệt chữ hoa chữ thường? –

+0

đó là địa chỉ chính xác và dường như không thể truy cập thư mục hình ảnh IS trong thư mục công khai. – sam