Rails STI и виды повторного использования - PullRequest
2 голосов
/ 11 марта 2012

У меня есть модель STI, и я хотел бы повторно использовать базовые представления для производной модели.Например, если у меня есть Учитель <Лицо, я бы хотел, чтобы представление Учителя содержало поля вида этого человека. </p>

Есть ли способ достичь этого?

Ответы [ 3 ]

1 голос
/ 11 марта 2012

Если я понимаю ваш вопрос ... они доступны по умолчанию. При использовании STI каждая производная модель имеет доступ ко всем полям базового класса. (любое поле в таблице)

Например, при рендеринге частичного вы можете просто передать объект как обычно:

= render :partial => 'person', :object => @teacher

Код выше можно сделать несколькими способами, но я просто пытаюсь проиллюстрировать.

0 голосов
/ 11 марта 2012

render используйте правильное частичное, так что если у вас есть партиалы _teacher.html.erb и _person.html.erb, вы можете render частичное лицо внутри учителя, а когда вы вызываете render с объектом, правильное частичное будет визуализации:

# @aldo is a Person, this will render _person.html.erb
render @aldo

# @mr_brown si a Teacher, this will render _teacher.html.erb
render @mr_brown

Потому что учитель частично передает человеку, который у вас есть, в этом случае и информацию.

0 голосов
/ 11 марта 2012

Если у вас есть учитель и контролер лиц, то вы можете визуализировать представления (частичные, шаблоны) от людей внутри представлений учителей.

Примеры

Вы можете написать нижестроки внутри учителей просмотров

= render :partial => 'persons/<PARTIAL NAME>'

= render :template => 'persons/<TEMPLATE>'

= render :file => 'persons/new'
...