递归印刷父母和压痕儿童(haml)

时间:2013-02-07 12:21:19

标签: ruby-on-rails recursion

我试图用缩进打印父母和孩子的名字。但我不确定如何在视图中做到这一点。(haml)

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

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

所以它有一个层次结构,我想要这样的东西(让我们假设属性'name'):

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

我是Ruby-on-rails的新手。所以请耐心等待。如果我能得到一个解释清楚的答案,我真的很感激。

非常感谢你, Ĵ

1 个答案:

答案 0 :(得分: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处理。