我有一个 STI 模型,并希望为派生模型重用基本视图。例如,如果我有 Teacher < Person,我希望 Teacher 的视图包含人员的视图字段。
有没有办法做到这一点?
我有一个 STI 模型,并希望为派生模型重用基本视图。例如,如果我有 Teacher < Person,我希望 Teacher 的视图包含人员的视图字段。
有没有办法做到这一点?
如果我理解您的问题……默认情况下它们是可用的。使用 STI 时,每个派生模型都可以访问基类中的所有字段。(表中的任何字段)
例如,在渲染局部时,您可以简单地像往常一样传递对象:
= render :partial => 'person', :object => @teacher
上面的代码可以通过多种方式完成,但我只是想说明一下。
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
因为在这种情况下,老师会部分呈现您所拥有的人的信息。
如果您有教师和人员控制器,那么您可以从教师视图中的人员渲染视图(部分、模板)。
例子
您可以在教师视图中写下以下行
= render :partial => 'persons/<PARTIAL NAME>'
= render :template => 'persons/<TEMPLATE>'
= render :file => 'persons/new'