[英]Rails: Why images are not showing in my rails basic app
我的index.html.erb
代碼 -
<h1>Listing products</h1>
<table border="1">
<% @products.each do |product| %>
<tr>
<td><%= product.title %></td>
<td><%= product.description %></td>
<td><%= image_tag(product.image_url, :class => 'list_image') %></td>
<td><%= product.price %></td>
<td><%= link_to 'Show', product %></td>
<td><%= link_to 'Edit', edit_product_path(product) %></td>
<td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Product', new_product_path %>
和圖像在app\assets\images
下 .. 但靜止圖像沒有出現在前端。
當我對它進行Firebug
時,我相信圖像標簽正在正確形成......讓我知道我在這部分中遺漏了什么。
<img src="/images/product1.jpg" class="list_image" alt="Product1">
截圖-
圖片也到位了——
讓我知道我做錯了什么以及如何解決。
編輯
讓我知道為什么它在我的情況下不起作用。
盡管將/images/product1.jpg
更改為/assets/product1.jpg
使其正常工作。
如果您正在使用資產管道http://guides.rubyonrails.org/asset_pipeline.html ,
圖片路徑應該是/assets/product1.jpg
而不是/images/product1.jpg
如果您不使用資產管道,請將圖像文件夾移動到public/images
我剛剛檢查了您的應用程序,您的代碼沒有任何問題。 唯一要做的就是了解image_tag 的工作原理。
通常你把所有的圖片、javscripts 和 stylesheets 放在app/assets目錄中。 當您在開發環境中工作時,這些文件是未壓縮的,但是當您部署到生產環境時,資產會被預編譯、縮小,結果文件存儲在public/assets 中。
縮小資產背后的想法只是讓客戶端的請求更快,並節省帶寬。
現在,在image_tag方法中,您可以使用圖像的外部路徑、圖像的本地路徑或圖像的相對路徑。
當你做
<%= image_tag "http://www.mywebsite.com/image.jpg" %>
它將使用圖像標簽的絕對網址,您將以
<img src="http://www.mywebsite.com/image.jpg" />
您也可以添加本地路徑,例如
<%= image_tag "/images/image.jpg" %>
哪個將結束
<img src="/images/image.jpg" />
這實際上是您遇到的問題,因為 Rails 在預編譯文件時,會將所有內容都放在/public/assets 中,您可以按照其他用戶的解釋,通過轉到路徑/assets來訪問這些文件。
所以代碼
<%= image_tag "/assets/image.jpg" %>
實際上有效,因為你以
<img src="/assets/image.jpg" />
您可以做的另一件事是使用相對路徑,即
<%= image_tag "image.jpg" %>
這將被轉換為
<img src="/assets/image.jpg" />
這將與最后一個場景相同。
盡管如此,在您的應用程序中,您將讓用戶上傳他們自己的圖像,這將在您繼續閱讀書籍時發生,在現實世界的應用程序中,您將使用像回形針或載波這樣的寶石
正如 Srikanth 已經說過的,應該引用資產路徑。 例如,您可以將<%= image_tag 'rails.png' %>
放在代碼中並檢查 firebug(或檢查 chrome 中的元素)以檢查結果。
我不太確定為什么您的代碼不起作用,因為我可以看到您遵循使用 Rails 進行敏捷 Web 開發。 我讓倉庫應用程序運行沒有問題。 在您的表格中,我看到您是“Product1”、“Product2”和“Product3”,這是您在 image_url text_field 中實際填寫的內容嗎? 如果將“Product1”更改為“product1.jpg”會發生什么?
附帶說明一下,如果您想使用 Paperclip,您的調用應如下所示:
<%= image_tag(product.image.url, class: 'list_image') %>
如果您收到帶有 .jpeg 擴展名的文件,請嘗試僅使用“.jpg”重命名該文件。
從
<%= image_tag "image.jpeg" %>
到:
<%= image_tag "image.jpg" %>
如果您正在關注 Agile Web Development With Rails 一書,那么 html.erb 代碼就沒有問題。 唯一的問題在於 scss 文件。 請檢查您是否將 td.image 顯示設置為無。 將顯示更改為塊,您將看到圖像。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.