Рекурсивно-печатные родители и дети с отступом (haml)

Я пытаюсь напечатать имя родителей и детей с отступом. Но я не уверен, как я могу это сделать. (Haml)

У меня есть модель с самостоятельным подключением: (просто для того, чтобы дать вам структуру, у меня также есть другие атрибуты и т. Д., Но я думаю, что они неактуальны)

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-rails. Поэтому, пожалуйста, медведь со мной. Я действительно очень признателен, если бы получил вполне объяснительный ответ.

Огромное спасибо заранее, J

0

1 ответы

вы можете использовать рекурсию. создать частичное, которое вызывает себя.

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

Я предполагаю, что у вас есть контроллер сообщений, который поставляется с папкой для его представлений в app/views/posts . Вам нужно создать частичный код, называемый _post.html.haml , который вызывает сам. Строка render сообщает вам сделать то же самое частичное для каждого из детей сообщения.

отступ может обрабатываться через css.

3
добавлено
Спасибо за ответ. Хотя я думаю, что синтаксис не совсем правильный, это помогло мне дать представление о том, как сделать рекурсию. Теперь я могу перебирать каждый элемент, но как я могу отступать без CSS?
добавлено автор Sammy, источник
Ну, я думаю, что вам не хватает «=>». Итак, "partial: 'post',: collection => post.children, as =>: post". В любом случае спасибо. Я думаю, что я начну новый вопрос для части отступа.
добавлено автор Sammy, источник
О, хорошо. благодаря :)
добавлено автор Sammy, источник
Я не понимаю, что вы подразумеваете под отступом без CSS. приведенный выше код является действительным кодом haml (кроме комментария).
добавлено автор jvnill, источник
Неа. это синтаксис 1.9.x для хеша :) вам также не нужен параметр : as , так как имя частичного кода _post и по соглашению, использует это как имя локальной переменной.
добавлено автор jvnill, источник
pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff