簡體   English   中英

Rails:為什么圖像沒有顯示在我的 Rails Basic 應用程序中

[英]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">

截圖-

截屏

圖片也到位了——

圖片占位符

讓我知道我做錯了什么以及如何解決。

編輯

github.com/swapnesh/depot

讓我知道為什么它在我的情況下不起作用。

盡管將/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM