Использование докладчика с унаследованными ресурсами - PullRequest
3 голосов
/ 24 октября 2011

Я довольно часто использую превосходную драгоценность Inherited Resources в своих приложениях на Rails, но всякий раз, когда я хочу использовать докладчика, я прибегаю к написанию контроллеров вручную.

Есть ли хорошее, чистое решение для объединенияУнаследованные ресурсы с чем-то вроде Draper или Delegate_presenter?

1 Ответ

1 голос
/ 26 октября 2011

Автор delegate_presenter здесь.

delegate_presenter должен нормально работать с inherited_resources.Сейчас я на самом деле не использовал в проекте наследуемые_ресурсы, так что многое из этого просто из readme.

Что я всегда делаю, так или иначе создаю объект презентатора в представлении: todo_present = Present(@todo), например.

Если у вас есть шаблоны из общего источника (например, LegalTodo - это подкласс Todo, по какой-то непонятной причине), и вы делитесь шаблонами, вы можете сделать это в своем шаблоне:

presenter = Present(resource)

resource - по крайней мере, в соответствии с readme наследованными_ресурсами - является помощником для текущего ресурса, на который вы просматриваете (так, @todo или @legal_todo)

Present() рассмотрит класс объекта и создаст экземпляр соответствующего объекта презентатора.TodoPresenter если resource возвращает объект Todo, LegalTodoPresenter, если resource возвращает объект LegalTodo.

Затем, если эти презентаторы полиморфны, докладчики позволят вам абстрагироваться от различийпрочь («Имя LegalTodo будет описанием + номер депонирования, но имя элемента Todo должно быть просто описанием») - даже если вы делитесь мнениями!

...