2

我有一个 STI 模型,并希望为派生模型重用基本视图。例如,如果我有 Teacher < Person,我希望 Teacher 的视图包含人员的视图字段。

有没有办法做到这一点?

4

3 回答 3

1

如果我理解您的问题……默认情况下它们是可用的。使用 STI 时,每个派生模型都可以访问基类中的所有字段。(表中的任何字段)

例如,在渲染局部时,您可以简单地像往常一样传递对象:

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

上面的代码可以通过多种方式完成,但我只是想说明一下。

于 2012-03-11T04:58:42.843 回答
0

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

因为在这种情况下,老师会部分呈现您所拥有的人的信息。

于 2012-03-11T13:32:21.000 回答
0

如果您有教师和人员控制器,那么您可以从教师视图中的人员渲染视图(部分、模板)。

例子

您可以在教师视图中写下以下行

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

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

= render :file => 'persons/new'
于 2012-03-11T05:49:22.633 回答