2015-07-17 11 views
6

Tôi đang sử dụng Rails 4.2.3 và đang cố gắng tùy chỉnh trang lỗi 404 trong public/404.html. Làm cách nào để đưa hình ảnh từ đường dẫn nội dung?Trang 404 tĩnh Rails 4: cách sử dụng đường dẫn nội dung?

Có một excellent post cách tạo trang lỗi tùy chỉnh động. Tuy nhiên, như được mô tả ở đó, nó đòi hỏi rất nhiều thay đổi đối với các thiết lập mà tôi, là người mới bắt đầu, không sẵn sàng để thực hiện. Tất cả những gì tôi muốn làm là trong trang 404 của tôi để bao gồm 2 hình ảnh nằm trong đường ống nội dung. Có cách nào làm dễ hơn không?

Trả lời

5

Nếu bạn muốn trang lỗi của bạn để sử dụng hình ảnh từ các đường ống dẫn tài sản, sau đó bạn có hai tùy chọn:

  1. Sử dụng trang lỗi động (Tôi đã viết hướng dẫn here).
  2. Khỉ vá đường dẫn nội dung để cho phép nội dung không có dấu vân tay.

Vì bạn đang loại bỏ tùy chọn # 1 cho bây giờ, tôi nghĩ rằng miếng vá khỉ là con đường để đi. Cài đặt đá quý non-stupid-digest-assets trong ứng dụng của bạn. Điều này sẽ vá đường ống nội dung để nó tạo ra các tài sản không có dấu vân tay (ngoài các phần tử được lấy dấu vân tay).

# Gemfile 
gem "non-stupid-digest-assets" 

Và tất nhiên, đừng quên:

$ bundle install 

Sau đó, trong 404.html bạn, chỉ cần tham khảo các tài sản như thể nó là một tập tin tĩnh, như thế này:

<img src="/assets/my-image.png"> 

Điều này giả định hình ảnh thực tế được lưu trữ tại đây trong dự án của bạn:

app/assets/images/my-image.png 
+0

Có vẻ như có [cuộc đàm phán về chức năng không ngu ngốc-tiêu hóa tài sản được chuyển sang sprokets] (https://github.com/rails/sprockets-rails/issues/ 49). Câu trả lời tuyệt vời BTW. –

0

Trong một ứng dụng mới, các tuyến không tìm thấy được dẫn đến trang html tĩnh được tìm thấy trong public/404.html. Như bạn đã thấy đây là một tệp .html không phải là .html.erb có nghĩa là bạn phải làm những thứ ưa thích để truy cập vào đường dẫn nội dung của mình.

Nếu bạn không muốn gặp khó khăn khi tạo trang động, cách dễ nhất là sao chép * hai hình ảnh từ đường ống nội dung của bạn thành public/assets (hoặc thư mục con) và sau đó bao gồm:

<img src="assets/image.jpg"> 

* Bạn cũng có thể sử dụng liên kết tượng trưng nhưng có thể gây ra sự cố tùy thuộc vào cách thiết lập máy chủ sản xuất của bạn.

+0

Đúng, nhưng câu hỏi của tôi là làm cách nào để đưa hình ảnh từ đường dẫn nội dung? Hình ảnh trong đường ống nội dung được lưu trữ với một băm (trong Rails4). – Marty

+0

Xin lỗi về điều đó, tôi đã hiểu sự cố ngay bây giờ. Tôi đã cập nhật câu trả lời của mình để cố gắng trả lời nó tốt hơn. Bạn đã chết đặt trên bằng cách sử dụng đường ống nội dung cho hai hình ảnh này? Bạn có thể dễ dàng có 2 hình ảnh đó bên ngoài đường dẫn nội dung và không gây ra sự cố. –

+0

Có, tôi muốn sử dụng chúng từ đường ống nội dung và tự hỏi liệu có cách nào dễ dàng hơn không và cách được mô tả trong bài đăng tôi đang đề cập đến. – Marty

-1

trong 404.html add bạn ...

<head> 
    <link data-turbolinks-track="true" href="/assets/application.css" media="all" rel="stylesheet" /> 
    <script data-turbolinks-track="true" src="/assets/application.js"></script> 
</head> 
<body> 
    <img src="simple.gif"> 
</body> 
+0

Các URL này sẽ không giải quyết trong sản xuất vì chúng cần dấu vân tay – djb

0

Hãy ghi nhớ, rằng nội dung của thư mục public được hiển thị cho bất cứ ai. Có, theo quy ước, tôi sẽ tạo thư mục assets (nếu bạn chưa có), sau đó imagesstylesheets. Và tạo thường xuyên html trang

- app 
... 
- public 
    - 404.html 
    - images 
    - image1.jpg 
    - image2.jpg 
    - stylesheets 
    - style.css 

Sau đó, trong bạn 404.html bạn sẽ tham khảo nó như vậy:

<img src="./assets/images/image1.jpg" alt=""/>

1

Thêm hình ảnh vào thư mục công cộng.

Sử dụng đường dẫn gốc tương đối với hình ảnh trên các trang html 404/500 công khai.

<img src="/my-logo.png"/> 
Các vấn đề liên quan