Можем ли мы использовать s css (sass-rails) в файлах вида rails css .erb или это просто конвейер активов? - PullRequest
0 голосов
/ 07 марта 2020

Я хочу знать, можем ли мы использовать s css в представлениях рельсов, например,

/ views / home / home_stylesheet. css .s css .erb

$gray-medium-light : #eaeaea;

background: $gray-medium-light;

Я попытался изменить формат пути

<%= stylesheet_link_tag(about_me_user_path(current_user, format: :scss), media: 'all', class: "home_about_me_css") %>

А также в маршрутах

get    'user_profile_stylesheet/:id'  => 'users#user_profile_stylesheet',  as: :user_profile_stylesheet, :defaults => { :format => 'scss' }

Но рельсы, кажется, просто конвертируют формат обратно в css.

Может мы используем sass-rails gem, чтобы как-то это сделать?

Спасибо.

РЕДАКТИРОВАТЬ Я гуглил это, ничего не выдвигая.

1 Ответ

1 голос
/ 09 марта 2020

Теоретически это возможно, вызвав компилятор sass. Обратите внимание, что вы хотите использовать запрос для css, а не s css. Нет никакой причины, по которой клиент должен знать, как создается файл.

<%= stylesheet_link_tag(about_me_user_path(current_user, format: :css), media: 'all', class: "home_about_me_css") %>

class UsersController
  def user_profile_stylesheet
    respond_to do |f| 
      f.css do
        fn = Rails.root.join('app', 'views', 'home', 'home_stylesheet.css.scss.erb')
         # expand ERB template
        sass = render_to_string(file: fn)
        # run rendered template through the sass compiler
        css = SassC::Engine.new(sass, style: :compressed).render 
        render text: css
      end
    end  
  end
end   

Я не уверен, что это то, что вы действительно хотите сделать в производстве, так как это требует от вас компилировать sass во время выполнения при ответе на запросы. И вы не сможете ссылаться на что-либо вроде функций SASS в своем конвейере ресурсов, поскольку это скомпилировано вне конвейера.

Это также кошмар безопасности, поскольку SASS не просто декларативен, как CSS. И это может быть использовано для выполнения кода на вашем сервере.

Что бы вы ни пытались сделать, должно быть более умное / менее сложное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...