Определение отдельных представлений и ресурсов для интерфейса администратора в приложении Rails - PullRequest
3 голосов
/ 10 ноября 2011

Я пытаюсь создать CMS для своего сайта в Rails, и я хочу иметь отдельные стили для всех представлений, которые смогут видеть люди, читающие мой сайт, а именно: index и show просмотров и представления, которые обрабатывают создание, обновление и удаление представлений. Я понимаю, что, вероятно, мне следует разделить эти две области на отдельные контроллеры и указать пространство имен всех маршрутов администратора, но я не знаю, как сделать представления.

Есть ли способ указать макет, включая таблицы стилей и файлы javascript, для определенного набора контроллеров? Заметьте, я использую Rails 3.1, так что сейчас все в порядке, все мои таблицы стилей и скрипты скомпилированы в отдельные файлы, которые обслуживаются при каждом просмотре.

Ответы [ 3 ]

17 голосов
/ 10 ноября 2011

Я бегал в поисках очень похожей вещи. И мне посчастливилось найти отличную учебную статью Iain Hecker.

Backends в Rails 3.1

Он настроен с использованием пространства имен и шаблона наследования. И, что самое приятное, он использует драгоценный камень наследования_ресурсов Хосе Валима, который действительно очищает ваши контроллеры.

В любом случае, это действительно заставило меня пойти по правильному пути.

Кроме того, что поможет в вашем приложении по умолчанию. Убедитесь, что вы используете:

//= require_directory .

вместо

//= require_tree

Это заставит звездочки загружать только файлы в текущем каталоге. Затем вы можете добавить папку admin / с собственным файлом application.js, выполнив то же самое.

Тогда, конечно, вы используете layouts / application.html.erb:

<%= javascript_include_tag "application" %>

А в раскладках / admin / application.html.erb:

<%= javascript_include_tag "admin/application" %>

Надеюсь, это поможет ...

Адам.

3 голосов
/ 10 ноября 2011

Для CSS мне нравится добавлять некоторые классы тела в мой application.html.erb, которые позволяют мне отделить а) администратора от не-администратора и б) различных контроллеров / действий друг от друга. Вот как часто выглядит мой body тег

<body class="<%= 'admin' if admin? %> <%= params[:controller].parameterize %> <%= params[:controller].parameterize %>_<%= params[:action].parameterize %>">

, где admin? - это метод ApplicationHelper, определенный следующим образом:

def admin?
    controller.class.name.split("::").first=="Admin"
end

Для JS, вам нужно рассмотреть конкретный javascript. Для этого я собираюсь указать вам здесь . Обсуждаемая здесь методика работы с несколькими файлами манифеста может оказаться полезной для вас, поскольку вы можете создать файл admin.js, содержащий все необходимое в вашем пространстве имен Admin.

ОБНОВЛЕНИЕ: Я подумал, что это хороший вопрос, поэтому я написал более подробный ответ здесь

1 голос
/ 10 ноября 2011

Один из способов получить то, что, я думаю, вы хотите, - это использовать <div id="index"> индексный материал .... а затем используйте вложенные макеты для стилизации div

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