2013-02-07 99 views
0

我试图用缩进印刷父母和孩子的名字。但我不知道我怎么能在视图中做到这一点。(哈姆)递归 - 印刷家长和孩子的缩进(哈姆)

我有一个模型与自连接:(只是给你的结构,我也有其他属性等,但我认为他们是无关紧要的)

class Post < ActiveRecord::Base 
    has_many :children, :class_name => "Post" 
    belongs_to :parent, :class_name => "Post", :foreign_key => "post_id" 
end 

所以它有一个层次,我想有这样的事情(让我们与属性“名称”假设):

Post 1 
     Post 1.1 
     Post 1.2 
Post 2 
     Post 2.1 
       Post 2.2 

我非常新的的Ruby-on-轨道。所以请耐心等待。我真的很感激,如果我能得到一个非常明确的答案。

非常感谢你提前, Ĵ

回答

3

你可以使用递归。创建一个调用自己的部分。

# app/views/posts/_post.html.haml 
= post.title 
= post.content 
= render partial: 'post', collection: post.children 

我假设你有一个职位控制器,它附带了它在app/views/posts视图的文件夹。您需要创建一个名为_post.html.haml的部分,它本身称为 。 render一行告诉您为每个帖子的孩子渲染相同的部分。

可以通过css处理缩进。

+0

感谢您的回答。虽然我认为语法不是很正确,但它帮助我了解如何进行递归。现在我可以迭代每个项目,但是如何在没有CSS的情况下缩进? – Sammy

+0

我没有通过没有CSS的缩进来得到你的意思。上面的代码是一个有效的haml代码(注释除外)。 – jvnill

+0

嗯,我想你错过了“=>”。所以“部分:'后',:收集=> post.children,as =>:后”。不管怎么说,多谢拉。我想我会为缩进部分提出一个新问题。 – Sammy