@vadimstroganov

Выдающий список и древовидное отображение для Ancesty?

Здравствуйте!
Использую связку гемов: rails_admin + ancesrty + rails_admin_nestable
Пытаюсь сделать выпадающий список при создании страницы для указания родителя.
в Page.rb:
def self.ancestry_options(items)
  result = []
  items.map do |item, sub_items|
    result << [yield(item), item.id]
    result += ancestry_options(sub_items) {|i| "#{'-' * i.depth} #{i.title}" }
  end
  result
end


В rails_admin.rb:
field :ancestry, :enum do
  enum do
    Page::ancestry_options(Page.unscoped.arrange(:order => 'id')) { |i| "#{'-' * i.depth} #{i.title}" }
  end
end


Должно выглядеть примерно так:
5319bc21b98c4acaaf290b35705032bf.png

Но!
При создании новой страницы, в поле ancestry он записывает просто id страницы(из выпадающего списка)
К примеру id страниц:
root_page - 1
Videos - 2
Video 1 - 3

Тогда при создании новой страницы с указанием предка Videos, поле ancestry должно принять значение "1/2", а не просто "2"

Можно добавить коллбэк после создания/обновления записи и приводить поле к виду "1/2", но тогда после этого, к примеру если зайти в редактирование страницы которую мы только что создали, мы должны увидеть уже выбранную страницу родителя - Videos, но там пустота, так как там теперь хранится не "2", а "1/2"

Вопрос: можно ли как-то для формирования выпадающего списка вырезать родословную до последнего родителя?
например "1/2/5" => "5"
или "1/2" => 2
а после сохрания назад приводить к виду "2" => "1/2"
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы