Khi bạn sử dụng href="style.css"
, bạn đang chỉ định liên kết tương đối với biểu định kiểu. Con đường thực tế mà trình duyệt của bạn sẽ yêu cầu sẽ phụ thuộc vào url của trang hiện tại, vì vậy ví dụ nếu bạn có một tuyến đường như:
get '/things/:id' do
#look up thing with id = :id
erb :my_view
end
sau đó trình duyệt sẽ tìm kiếm các stylesheet tại /things/style.css
. Điều này rõ ràng sẽ không hoạt động nếu biểu định kiểu của bạn ở cấp cao nhất trong thư mục public
của bạn.
Khắc phục nhanh là sử dụng đường dẫn tuyệt đối cho biểu định kiểu của bạn: href="/style.css"
(lưu ý ký tự /
). Điều này sẽ làm cho trình duyệt luôn tìm kiếm biểu định kiểu tại gốc của máy chủ.
Giả định rằng ứng dụng của bạn luôn được gắn ở gốc máy chủ của bạn và sẽ không thành công nếu bạn chạy nó trong thư mục con. Bạn muốn có thể nói "tìm kiếm bản định kiểu trong thư mục gốc của ứng dụng này, bất cứ nơi nào nó xảy ra". Tại Sinatra, bạn có thể làm điều này bằng cách sử dụng url
helper method. Sử dụng ERB như ngôn ngữ mẫu của bạn này sẽ như thế nào:
<link href="<%= url('/style.css') %>" rel="stylesheet" type="text/css" />
Điều này sẽ đảm bảo tính liên kết đến style.css
sẽ được chính xác bất cứ nơi nào ứng dụng của bạn có vị trí.