Compass est un precompilateur qui est appele de maniere "statique" par
l'asset pipeline.
Tu peux l'utiliser en Ruby si tu veux mais c'est galere.

Moi je te conseillerais de mixer la vision d'olivier et celle de guirec en
utilisant un controller pour generer la feuille de style, un template
css.scss.erb pour generer la feuille de style et jouer avec le cache
controller / etags pour ne regenerer que quand c'est necessaire.

# routes

resource :custom_stylesheet

# controller

class CustomStylesheetController < ActionController::Base
  respond_to :css

  def show
    @setting = settings

    # C'est peut etre pas complet, je sais pas.
    if stale?(last_modified: @settings.updated_at, etag: @setting.cache_key)
      respond_with @settings
    end
  end
end

# template (show.css.scss.erb)

body {
  @include background(linear-gradient(<%= settings.main_color %>, <%=
settings.secondary_color %>));
}

# template appelant

<%= stylesheet_link_tag custom_stylesheet_path %>

Sinon l'autre solution, c'est de pas gerer ca cote serveur. Si tu le geres
en javascript en n'envoyant que l'objet settings a ton client, c'est
nettement plus simple.

2015-11-25 1:48 GMT+08:00 Alexandre Friquet <alexandre.friq...@infopiiaf.fr>
:

> Le 24/11/2015 17:59, Alexandre Friquet a écrit :
>
>> Solution intéressante, à voir si je peux utiliser les mixins de compass
>> pour générer un css de dégradé linéaire, mais ça doit pouvoir se faire. ;)
>>
>
> Bon, j'y suis presque :
>
> def custom_css
>   content_tag :style do
>     my_css = <<SCSS
> body {
>   @include background(linear-gradient(#{settings.main_color},
> #{settings.secondary_color}));
> }
> SCSS
>     Sass::Engine.new(my_css, syntax: :scss).render
>   end
> end
>
> Le problème est qu'il ne semble pas trouver compass (Undefined mixin
> 'background'.) contrairement à ce qui est écrit ici :
> http://stackoverflow.com/questions/22431552/process-sass-and-compass-in-rails-view-with-passed-variables
>
>
> --
> Alexandre
>
> --
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> railsfrance@googlegroups.com
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> railsfrance-unsubscr...@googlegroups.com
> --- Vous recevez ce message, car vous êtes abonné au groupe Google
> Groupes Railsfrance.
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
> railsfrance+unsubscr...@googlegroups.com.
> Pour plus d'options, visitez le site https://groups.google.com/d/optout .
>

-- 
-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
railsfrance-unsubscr...@googlegroups.com
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com.
Pour plus d'options, visitez le site https://groups.google.com/d/optout .

Répondre à