2009-08-26 4 views
5

Hey, je suis nouveau à Rails et Ruby en général. Je me demandais s'il est possible d'utiliser un fichier css ruby ​​intégré (css.erb), similaire à l'utilisation de fichiers html.erb pour les vues.Possible d'utiliser stylesheet.css.erb dans Rails?

Par exemple, j'utilise

<%= stylesheet_link_tag "main" %> 

pour créer un lien vers mon fichier main.css dans/stylesheets publics, mais quand je change l'extension de fichier de main.css à main.css.erb, il Est-ce encore possible, ou y a-t-il une meilleure façon de le faire?

Répondre

3

Je ne pense pas. Quelle est votre intention - utiliser des variables et les faire évaluer à l'exécution, ou «compiler» le temps (c'est-à-dire comme le temps de déploiement?). Aussi, quelle serait la liaison ERB? Se lierait-il au contrôleur, comme le sont les vues et les aides, afin que l'instance ERB ait accès aux variables d'instance définies dans le contrôleur? Je pose simplement cette question en tant qu'exercice théorique.

Si vous souhaitez utiliser des variables dans votre CSS, vous pouvez utiliser le SASS de Haml. Vous n'avez pas accès à la portée du contrôleur mais vous obtenez des variables de base et des boucles. Plus d'autres trucs sympas comme les mixins.

4

Vous pouvez également générer un "stylesheets" contrôleur

./script/generate controller stylesheets main admin maintenance 

vous obtenez quelque chose comme ceci:

 exists app/controllers/ 
     exists app/helpers/ 
     create app/views/stylesheets 
     exists test/functional/ 
     exists test/unit/helpers/ 
     create app/controllers/stylesheets_controller.rb 
     create test/functional/stylesheets_controller_test.rb 
     create app/helpers/stylesheets_helper.rb 
     create test/unit/helpers/stylesheets_helper_test.rb 
     create app/views/stylesheets/main.html.erb 
     create app/views/stylesheets/admin.html.erb 
     create app/views/stylesheets/maintenance.html.erb 

Et vous pouvez ensuite utiliser les app/views/stylesheets/fichiers comme dynamiquement rendus css des dossiers.

La même méthode fonctionne pour les fichiers javascript (contrôleur javascripts)

+1

Existe-t-il un moyen de server les feuilles de style via un contrôleur et de tirer parti de la mise en cache de la feuille de style des rails? – Pablo

22

Au moment où cette question a été répondu qu'il y avait en effet aucun moyen d'utiliser .css.erb fichiers dans des rails correctement. Mais le pipeline d'actifs de new rails 3.1 vous permet d'utiliser des aides d'actifs à l'intérieur de votre fichier CSS. Le code CSS parseurs n'est pas binded un champ contrôleur/action, mais l'analyseur rubis est maintenant en mesure de résoudre certains problèmes comme chemin de l'image fait référence

.class { background-image: url(<%= asset_path 'image.png' %>) } 

ou intégrer une image directement dans votre css

#logo { background: url(<%= asset_data_uri 'logo.png' %>) } 

sources : http://guides.rubyonrails.org/asset_pipeline.html

Questions connexes