Вы также можете иметь разные макеты для каждой темы.Хотя это не очень СУХО, иногда полезно продублировать некоторый код, чтобы отделить модули приложения, уменьшая влияние негативных изменений.Нечто аналогичное проблеме Хрупкий базовый класс .
Я бы воспользовался манифестом index
и организовал бы ваш app/assets
в развязанные модули.Следующая структура принадлежит проекту, над которым я сейчас работаю.Допустим, ваше приложение состоит из трех модулей: общедоступной части, пользовательского интерфейса администратора и, например, CRM, чтобы ваши агенты могли отслеживать процесс продаж в вашей компании:
app/assets/
├── coffeescripts
│ ├── admin
│ │ ├── components
│ │ ├── index.coffee
│ │ └── initializers
│ ├── application
│ │ ├── components
│ │ ├── index.sass
│ │ └── initializers
│ └── crm
│ ├── components
│ ├── index.sass
│ └── initializers
├── images
│ ├── admin
│ ├── application
│ └── crm
└── stylesheets
├── admin
│ ├── components
│ └── index.sass
├── application
│ ├── components
│ └── index.sass
└── crm
├── components
└── index.sass
21 directories, 6 files
У вас может быть один модульпо теме, и, вероятно, core_theme
, содержащий общие таблицы стилей, изображения и, в конечном итоге, компоненты JS.
Либо вы выберете один макет общего ресурса, либо нет, вы можете просто добавить следующие строки, что приведет вас к болееорганизованная кодовая база и правильно скомпилированные производственные ресурсы.
= stylesheet_link_tag 'theme_a'
= javascript_include_tag 'theme_a'
Не забудьте обновить application.rb
, чтобы они были правильно скомпилированы:
config.assets.precompile = %w(admin.js application.js crm.js
admin.css application.css crm.css)