包含孩子的Rails STI父母

时间:2014-07-20 23:57:46

标签: ruby-on-rails single-table-inheritance sti

我有两种类型使用STI模型 - 单表继承

class Entry < ActiveRecord::Base
  belongs_to :cycle 

class Cycle < Entry
  has_many :entries

在cycle / show.html.erb中,我有一个典型的表格,显示属于这个周期的所有条目。

<% @cycle.entries.each do |entry| %>
<table>display rows of data from entries</table>
<% end %>

是否有一种干净的方法我可以在表的第一行中包含循环数据,而不用@ cycle.value重复标记

2 个答案:

答案 0 :(得分:1)

嗯,这些信息可用,只是前缀为@cycle而不是entry ......

<li><%= entry.description %></li> 
<li><$= @cycle.description %></ul> 

... @cycle属性在每个each循环中都可用。这假设您正在循环@cycle.entries,如您的示例所示。

答案 1 :(得分:1)

是的,所以将“显示数据行”放入一个名为“_table_lines”的部分中,其中您将模型称为“对象”

(例如

<ul>
<li><%= object.description %></li> 
<li><$= object.created_at %></li>
</ul> 

然后

<%= render partial: 'table_lines', locals: {object: @cycle} %>
<% @cycle.entries.each do |entry| %>
<%= render partial: 'table_lines', locals: {object: entry} %>
<% end %>