2014-05-08 41 views
1

我想显示在该表格式的视图中的对象的所有子记录:轨道4 - 显示嵌套记录表,垂直格式化

obj 1 | obj 2 | obj 3 | obj 4 
----------------------------- 
attr 1| attr 1| attr 1| attr 1 
----------------------------- 
attr 2| attr 2| attr 2| attr 2 
----------------------------- 
attr 3| attr 3| attr 3| attr 3 
----------------------------- 
attr 4| attr 4| attr 4| attr 4 

总会有4列,即使有少于4个对象(它们只会保持空着)。我不确定的是如何循环访问属性,然后依次显示每个对象的属性,以便表格遵循上述格式。

我曾尝试:

<% @parent.children.attributes.each do |attr_name, attr_value| %> 
    <% @parent.children.each do |itm| %> 
    <% itm.attr_value %> 
    <% end %> 
<% end %> 

通过上面的代码中,我得到的undefined method 'attributes'错误。

+0

你在哪里找到'child'方法?你有没有定义它,如果是的话,它会返回什么? –

+0

@ArupRakshit'孩子'不是一种方法。这正是我用来引用嵌套记录的原因。 '父'与'子'有has_many关系,''子''belongs_to'父' – Jordan

+1

好..那么你应该写为'children'..n'不是子' –

回答

2

这是做你要找的?

<% @parent.children.each do |itm| %> 
    <%= itm.name %> 
<% end %> 

<% attributes = @parent.children.first.attributes %> 

<% attributes.each do |attr_name, attr_value| %> 
    <% @parent.children.each |itm| %> 
    <%= itm.send(attr_name) %> 
    <% end %> 
<% end %> 
+0

不,这会生成一个表格,其中的对象显示在行中。我希望它们按照问题中所述的方式显示在列中。 – Jordan

+1

@honestinjun编辑了答案,看错了这个问题。我有一段时间没有用过erb,所以也许在某处可能会出现一个小的语法错误。 – Iceman

+1

@honestinjun这是否有效? – Iceman