2012-06-26 26 views
5

Trong chế độ xem hiển thị của tôi bất cứ khi nào tôi thử và hiển thị hình ảnh bằng thanh công cụ xây dựng image_tag không tìm kiếm hình ảnh trong thư mục công cộng bên trong chế độ xem chương trình của tôi.Rails 3 Không nhìn vào thư mục công cộng Đối với tài sản Hiển thị phương thức

Ví dụ:

<%= image_tag "thumbnails/fish.jpg" %> 

Sẽ tạo ra này:.

ActionController::RoutingError (No route matches [GET] "/uploads/thumbnails/fish.jpg"): 

tôi đang sử dụng Gem kẹp giấy cho mô hình tải lên của tôi và tôi tiết kiệm nhật t oa thư mục khác với thư mục công cộng vì lý do bảo mật và có, chế độ xem hiển thị này xảy ra trong bộ điều khiển Tải lên ...

Trong mô hình Tải lên của tôi, tôi sử dụng để lưu tải lên thư mục ngoài công khai:

has_attached_file :upload, :path => ":rails_root/:class/:id/:basename.:extension", 
          :url => ":rails_root/:class /:id/:basename.:extension" 

tuyến Rake:

upload GET /uploads/:id(.:format)                 {:action=>"show", :controller=>"uploads"} 
     PUT /uploads/:id(.:format)                 {:action=>"update", :controller=>"uploads"} 
     DELETE /uploads/:id(.:format)                 {:action=>"destroy", :controller=>"uploads"} 
       /download/:id(.:format)                {:controller=>"uploads", :action=>"download"} 

Sửa Lưu ý: Nếu tôi rõ ràng làm cho thẻ img và chỉ src đến hình ảnh của tôi nó hoạt động tốt trên quan điểm chương trình của tôi vì vậy tôi làm Tôi không nghĩ đó là vấn đề về quyền.

+0

đường dẫn chính xác cho hình ảnh của bạn là gì? –

+0

rails_app/public/images/thumbnails/image.jpg – Noz

Trả lời

7

Câu trả lời là khá đơn giản, và tôi không thể tin rằng Rails đang được này kén chọn nhưng tôi cần phải bao gồm một dấu gạch chéo ở phần đầu của con đường như vậy:

"thumbnails/fish.jpg" 

trở thành

"/thumbnails/fish.jpg" 

tôi vẫn tò mò là tại sao đây chỉ là một vấn đề về quan điểm chỉ số không ...

+0

Với chế độ xem không phải chỉ mục, bạn có nghĩa là những người không phải là 'http: // example.com /', nhưng 'http: // example.com/someview' hoặc' http:// example.com/anotherview'? Nếu có, thì sự khác biệt là: có dấu gạch chéo hàng đầu định nghĩa đường dẫn tuyệt đối từ chế độ xem chỉ mục của bạn; mà không có dấu gạch chéo hàng đầu, đó là một đường dẫn tương đối, có nghĩa là bạn đang truy cập '/ someview/thumbnails/fish.jpg', đó là đường dẫn sai. –

+0

Tôi có nghĩa là con đường chỉ mục. Rõ ràng có sự khác biệt giữa 'GET/model' và 'GET/model/id' khi phân phát nội dung. Hoặc là có hoặc có một vấn đề với các tuyến đường của tôi. – Noz

2

Bạn có thể cần phải thay đổi dòng này là true:.

config.serve_static_assets = false 

trong môi trường/file * rb (ví dụ development.rb). Hoặc là tôi đã thấy đây là vấn đề quyền đối với thư mục được đề cập ở đâu nên một CHMOD 777 trên thư mục có thể giải quyết nó/hướng bạn đi đúng hướng.

Dưới đây là một SO ticket về một vấn đề tương tự

+0

Tôi không thực sự có dòng đó trong bất kỳ môi trường nào của tôi.rbs - Tôi đang sử dụng Rails 3.1.3 – Noz

+0

Nó không có ở đó vì nó mặc định là false, nhưng bạn có thể thêm nó, đặt nó thành true – vemv

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