Меню отображается на всех страницах, код дублируется на всех контроллерах - PullRequest
1 голос
/ 18 февраля 2011

У меня есть модель коллекции. Я успешно создал _collection.html.erb, которому я звоню с <%= render @collections%> в макете приложения.

Моя проблема в том, что во ВСЕМ методе моего контроллера я должен добавить @collections = Collection.all

Я нахожу это очень, очень уродливым, это изменит мою область видимости, и я уверен, что мне не хватает магии рельсов, что-то, что было бы намного лучше.

Есть ли способ получить часть макета, сгенерированного данными модели, без идентичного куска кода в AAAALLLLLL контроллерах?

Ответы [ 2 ]

5 голосов
/ 18 февраля 2011

Обратите внимание, что все ваши контроллеры наследуются от ApplicationController.Используйте это в ваших интересах.Добавьте before_filter к ApplicationController, который загружает ваши коллекции.

1 голос
/ 19 февраля 2011

@ камера была права. У любого проекта рельсов есть ApplicationController. Все ваши контроллеры начинаются с MyController

/app/controllers/application_controller.rb

before_filter :load_collection

def load_collection
    @collections = Collection.all
end

Теперь вы можете использовать @collections со всех ваших контроллеров (если они унаследованы от ApplicationController)

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