Я обычно помещаю классы в элемент body для контроллера и имени действия, так как это удобно во многих отношениях.Вот пример, основанный на этой стратегии:
...
<body class="<%= controller_name %> <%= action_name %>">
<div id="content">
<div id="sidebar">
// Some Stuff
</div>
<div id="main">
<%= yield %>
</div>
</div>
</body>
...
, тогда нужно получить правильный CSS.Если у вас был контроллер 'posts', боковая панель обычно видна, и вы хотите скрыть ее:
body.posts { #sidebar { display: none; } };
Если вы хотите, чтобы он отображался только иногда, вы можете инвертировать логику, чтобы она обычно скрывалась, затем переопределите с более конкретной областью, чтобы показать это.Или у вас может быть один столбец для всех действий «индекса», два столбца для всего остального и т. Д.
Недостатком этого, и это немаловажно, является то, что ваши представления связаны с именем контроллера,Т.е. эта стратегия нарушает принцип «говори, не спрашивай».Я все еще думаю, что оно того стоит, так как я еще не сталкивался с неприятным рефакторингом, связанным с этим кодом.Обычно это просто изменить пару экземпляров имени контроллера в ex."posts.css.scss" при переименовании файла;ничего страшного.Просто что-то взвесить.
Кроме того, обратите внимание, что я выбрал более описательные названия классов.«Левый» и «правый» эфемерны, как показывает ваш пример.«Боковая панель» и «главная» могут быть не тем, что у вас есть, но я постараюсь описать, что в них содержится, если это возможно.