Rails 6.0.2.2 を使っています。
assets を使ってコントローラ毎に css を使い分けていて以下のようにうまく機能していました。
app/view/layouts/application.html.erb
erb
1<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 2<%= stylesheet_link_tag params[:controller], media: 'all', 'data-turbolinks-track': 'reload' unless devise_controller? %>
- app/assets/stylesheets/<コントローラ名に対応した名前>.scss が存在する
- application.scss では
require_tree .
は使っていない
これを webpacker 側に寄せたく、以下のように *_pack_tag
を使うようにしました。
scss ファイルも app/javascript/stylesheets/ 配下にコピーしました。
application.scss のスタイルは効くようになったのですが、コントローラ毎のスタイルが効いていません。
どうしたらよいでしょうか?
現状では以下のようになっています。
- config/webpack/environment.js
js
1const { environment } = require('@rails/webpacker') 2 3const webpack = require('webpack') 4environment.plugins.prepend( 5 'Provide', 6 new webpack.ProvidePlugin({ 7 $: 'jquery/src/jquery', 8 jQuery: 'jquery/src/jquery', 9 jquery: 'jquery/src/jquery', 10 Popper: 'popper.js' 11 }) 12) 13 14module.exports = environment
- app/javascript/packs/application.js
js
1import 'bootstrap' 2import '../stylesheets/application' 3 4require("@rails/ujs").start() 5require("turbolinks").start() 6require("@rails/activestorage").start() 7require("channels") 8require("trix") 9require("@rails/actiontext")
上記の 2行目で scss を読み込んでいると思うのですが、3行目あたりに
import '../stylesheets/コントローラ名1' import '../stylesheets/コントローラ名2' . .
のように列挙しても CSS が混ざってしまいますよね!?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 23:23
2020/07/20 23:45
2020/07/21 01:18
2020/07/21 08:47 編集
2020/07/21 08:13
2020/07/21 08:47
2020/07/21 08:48
2020/07/21 10:16
2020/07/23 03:49