假设我有一个与自身有一对多关系的模型Person(即Parent - > Child)。在给定show.html.erb
上呈现@person
时,我希望它还包含为父级呈现show.html.erb
的结果。
基本上我想要
的正确语法 <%= render @person.person %>
我实际上尝试过手动
<%= render :file => "/persons/1.html.erb" %>
它不起作用。有人可以帮助我理解render
的语法吗?感谢。
(请注意,我实际上有一个更复杂的模型,我正在渲染SVG文件,而不是HTML。)
答案 0 :(得分:0)
将show.html.erb的大部分内容放在名为_person.html.erb的文件中,然后在show.html.erb中输入:
<%= render :partial => 'person', :locals => {:person => @person} %>
在_person.html.erb
中使用person代替@person(请注意,文件名以下划线开头。)
答案 1 :(得分:0)
在Person模型中创建一个方法来获取相关人员的数组,例如父母:
def parents(person)
Person.find(:all, :conditions => ...
end
在控制器中,获取父母:
@parents = Person.parents(someone)
在个人视图(show.html.erb
)中,循环parent数组并将每个数组作为参数传递给局部视图:
<% @parents.each do |parent| %>
<%= render :partial => 'info', :locals => { :person => parent } %>
<% end %>
创建部分视图:_info.html.erb
,person
是存储人员记录的本地变量,可以在部分表单中访问。