Railsアプリケーションでは、設定ファイルを使用して「テーマ」を切り替えることができます。テーマは動的に切り替える必要はありません(実行中は、アプリケーション起動時に認識されます)。アセットに別のフォルダを使用する
stylesheets
ディレクトリをassets
ディレクトリから、/app/themes/[themename]/assets/stylesheets
というフォルダに移動しました。
アイデアは、/app/themes
ディレクトリに複数のフォルダを持ち、アプリケーションで使用することができます。
メモ:私はjavascripts
フォルダをassetsフォルダから移動しませんでした。なぜなら、それはまだグローバルに使用したいからです。私の資産がどこにある
もちろん<%= stylesheet_link_tag "#{controller_name}" if MyApp::Application.assets.find_asset("#{controller_name}") %>
は、私のアプリケーションは、もはや知っていて、それが私のページ、資産を提供しています:私のレイアウトでは
私は、コントローラの特定のスタイルシートをロードするには、次のコードを使用しません(上記のif
チェックのために)読み込まれていません。
私はそれがまたテーマディレクトリから資産をロードすることを確認するために私のconfig/initializers/assets.rb
に次のコードを追加しました:
Dir.glob("#{Rails.root}/app/themes/#{Settings.site.theme}/assets/**/").each do |path|
Rails.application.config.assets.paths << path
end
Settings.site.theme
が正しく充填され、今のスタイルシートが実際にロードされた文字列値ですウェブサイト。従ってYAY!
しかし、ここではconfig.assets.compile
をfalse
に変更すると、すべてが失敗します(テストとプロダクションでは失敗します)。
MyApp::Application.assets.find_asset("#{controller_name}")
は、例外undefined method
'find_asset for nil:NilClass`を送出しています。
私はRails 5.0.0.1です。
誰でもこの問題を解決する方法がありますか?