Вам было бы проще перенести свою конфигурацию CSS в Ruby и затем отправить _global-settings.css.scss
и небольшой кусочек CoffeeScript через ERB. Тогда у вас есть настройки и вы можете получить к ним доступ везде.
Где-то в Ruby у вас будет это:
CSS_SETTINGS = {
:text_color => '#333',
:text_color_hilite => '#f33',
:font_size => '14px',
#...
}
Затем переименуйте ваш _global-settings.css.scss
в _global-settings.css.scss.erb
и используйте внутри него такие вещи:
$text-color: '<%= CSS_SETTINGS[:text_color] %>';
// ...
А внутри global_settings.js.coffee.erb
вы могли бы иметь это:
window.app.global_settings = <%= CSS_SETTINGS.to_json.html_safe %>
Вы могли бы даже написать простой помощник вида, который бы SASSify Hash:
def sassify(h)
h.map do |k, v|
# You might want more escaping for k and v in here, this is just
# a simple proof of concept demo.
[ '$', k.to_s.gsub('_', '-'), ': ', "'#{v}'", ';' ].join
end.join("\n")
end
и тогда вы можете сказать это в своем _global-settings.css.scss.erb
:
// Import global CSS settings.
<%= sassify(CSS_SETTINGS).html_safe %>
Вы также можете сделать обезьянку, исправившую to_sass
в Hash и использовать CSS_SETTINGS.to_sass
, но это, вероятно, слишком далеко заходит.