Здравствуйте!
Использую связку гемов:
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
Должно выглядеть примерно так:
Но!
При создании новой страницы, в поле 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"