J'essaie de mettre mon application en production et les chemins des ressources image et css ne fonctionnent pas.
Voici ce que je fais actuellement:
- Les éléments d'image se trouvent dans /app/assets/images/image.jpg
- Les feuilles de style se trouvent dans /app/assets/stylesheets/style.css
- Dans ma mise en page, je référence le fichier css comme ceci:
<%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
- Avant de redémarrer unicorn, je cours
RAILS_ENV=production bundle exec rake assets:precompile
et ça réussit et je vois les fichiers d'empreintes digitales dans lepublic/assets
répertoire.
Lorsque je navigue sur mon site, j'obtiens une erreur 404 non trouvée pour mysite.com/stylesheets/styles.css
.
Qu'est-ce que je fais mal?
Mise à jour: Dans ma mise en page, cela ressemble à ceci:
<%= stylesheet_link_tag "bootstrap.min", media: "all", "data-turbolinks-track" => true %>
<%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
La source de génération est la suivante:
<link data-turbolinks-track="true" href="/stylesheets/bootstrap.min.css" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/stylesheets/styles.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/assets/application-0c647c942c6eff10ad92f1f2b0c64efe.js"></script>
Il semble que Rails ne recherche pas correctement les fichiers css compilés. Mais il est très déroutant de savoir pourquoi cela fonctionne correctement pour les javascripts (notez le /assets/****.js
chemin).
<%= stylesheet_link_tag "style", media: "all", "data-turbolinks-track" => true %>
public/assets
et 2. vérifier s'il n'y a pas une autre instruction quelque part essayant de charger ce fichier css (vraisemblablement codé en dur)
.home {background: #FFF url(<%= image_path 'hippopotamus.jpg' %>) no-repeat; }
peut en fait être remplacé dans sprocket par .home {background: #FFF url(image-path('hippopotamus.jpg')) no-repeat; }
. Peut-être que vous pouvez essayer si cela vous aide.
stylesheet_link_tag
.