web-dev-qa-db-fra.com

Pourquoi les images n'apparaissent pas dans mon application de base Rails

mon index.html.erb code -

<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 %>

et les images sont sous app\assets\images .. mais les images fixes ne s'affichent pas au recto.

Quand je la nomme Firebugname__, je crois que la balise image se forme correctement ... faites-moi savoir ce qui me manque dans cette partie.

<img src="/images/product1.jpg" class="list_image" alt="Product1">

Capture d'écran -

screenshot

Les images sont également en place -

image placeholder

Faites-moi savoir ce que je fais mal et comment puis-je le réparer.

EDIT

github.com/swapnesh/depot

Faites-moi savoir pourquoi cela ne fonctionne pas dans mon cas.

Bien que changer /images/product1.jpg To /assets/product1.jpg le fasse fonctionner.

13
swapnesh

Si vous utilisez un pipeline d'actifs http://guides.rubyonrails.org/asset_pipeline.html

Le chemin de l'image doit être /assets/product1.jpg au lieu de /images/product1.jpg

Si vous n'utilisez pas le pipeline d'actifs, déplacez le dossier images vers public/images

22
Srikanth Jeeva

Je viens de vérifier votre application, il n'y a rien de mal avec votre code. La seule chose à faire est de comprendre comment image_tag fonctionne.

Habituellement, vous placez toutes vos images, scripts javascript et stylesheest dans le répertoire app/assets . Lorsque vous travaillez dans l'environnement de développement, ces fichiers sont servis non compressés, mais lors du déploiement en production, les actifs sont précompilés, minifiés et les fichiers de résultats sont stockés dans public/assets .

L'idée derrière les actifs minifiés est simplement de rendre les demandes plus rapides pour les clients et d'économiser de la bande passante.

Maintenant, avec la méthode image_tag , vous pouvez utiliser un chemin externe pour l’image, un chemin local pour l’image ou un chemin relatif pour l’image.

Quand tu fais

<%= image_tag "http://www.mywebsite.com/image.jpg" %>

il utilisera l'URL absolue pour le tag image, et vous terminerez par

<img src="http://www.mywebsite.com/image.jpg" />

Vous pouvez également ajouter un chemin local, comme

<%= image_tag "/images/image.jpg" %>

Qui se terminera par 

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

c'est le problème que vous rencontrez, car Rails, lorsqu'il précompile les fichiers, tout est placé dans/public/assets , et vous pouvez accéder à ces fichiers en allant dans le chemin/assets comme l'ont expliqué les autres utilisateurs.

Donc le code

<%= image_tag "/assets/image.jpg" %>

fonctionne réellement, parce que vous finissez avec

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

L’autre chose que vous pouvez faire est d’utiliser un chemin relatif, c’est-à-dire.

<%= image_tag "image.jpg" %>

qui sera converti en

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

et cela fonctionnera le même scénario le dernier.

Néanmoins, sur votre application, vous allez laisser les utilisateurs télécharger leurs propres images. Cela se produira plus tard, lorsque vous avancerez sur le livre, sur une application du monde réel, vous utiliserez une gemme telle que Trombone ou onde porteuse

10
rorra

Comme Srikanth l'a déjà dit, le chemin des actifs doit être référencé. À titre d'exemple, vous pouvez insérer <%= image_tag 'Rails.png' %> dans votre code et vérifier firebug (ou inspecter un élément dans chrome) pour vérifier le résultat.

Je ne sais pas trop pourquoi votre code ne fonctionne pas, car je vois que vous avez suivi le développement Web agile avec Rails. J'ai l'application de dépôt en cours d'exécution sans problèmes. Dans votre tableau, je vous vois 'Product1', 'Product2' et 'Product3', est-ce ce que vous avez réellement renseigné dans le champ text_field de image_url? Que se passe-t-il si vous changez 'Product1' en 'product1.jpg'?

Sur une note de côté, si vous souhaitez utiliser Paperclip, votre appel devrait ressembler à ceci:

<%= image_tag(product.image.url, class: 'list_image') %>
1
Peter de Ridder

Si vous recevez un fichier avec une extension .jpeg, essayez de renommer le fichier avec simplement ".jpg". 

De 

<%= image_tag "image.jpeg" %>

À:

<%= image_tag "image.jpg" %>
0
surgentt