#jquery #css #ruby-on-rails-3 #treeview #ruby-on-rails-3.1
#jquery #css #ruby-on-rails-3 #просмотр дерева #ruby-on-rails-3.1
Вопрос:
Я использую драгоценный камень ancestry и следил за эпизодом railscasts здесь, чтобы заставить драгоценный камень работать, который работает отлично.
Я создал довольно большое дерево предков, и хотя родительские и дочерние элементы вложены путем отступа полей, я предпочитаю какие-то линии маршрутизации. На рисунке ниже показана небольшая часть общего дерева.
Я хотел бы, чтобы структура выглядела так / или что-то подобное
Я попытался поиграть со структурой, добавив строки, но, похоже, я просто оказался в дыму.
Каждому родительскому и дочернему элементу присваивается отдельное поле div, подобное этому (в помощнике). точно так же, как в эпизоде railscasts .
def nested_messages(messages)
messages.map do |message, sub_messages|
render(message) content_tag(:div, nested_routes(sub_messages), :class => "nested_messages")
end.join.html_safe
end
Как это можно сделать, если это возможно. Какие-либо подсказки?
Ответ №1:
Я бы не стал пытаться создавать строки, используя приемы div и css. Вы пытаетесь создать элемент пользовательского интерфейса, подобный дереву навигации. Просто используйте настоящую библиотеку пользовательского интерфейса, такую как jsTree. Используйте rails для создания структуры данных (вы уже это сделали), визуализируйте статический <ul>
список HTML (это должно быть легко преобразовать ваши <div>
s в элементы списка). Затем позвольте javascript отобразить представление этой структуры данных (строки и т. Д.), И вы получите интерактивность и другие вещи бесплатно. 🙂
Вот основной сайт: http://www.jstree.com /
Посмотрите эту демонстрацию: http://www.jstree.com/documentation/core#demos
Посмотрите на источник страницы, и вы увидите <div id="demo2" ...>
, где начинается волшебство.
Установка jQuery и этого плагина должна быть довольно простой в Rails 3 (в 3.1 у вас уже есть jQuery).
Комментарии:
1. спасибо за руководство. Я попробую это и посмотрю, связано ли это с драгоценным камнем ancestry, который я использую. Оставит вопрос открытым на несколько дней, чтобы узнать, хочет ли кто-нибудь еще что-нибудь опубликовать.
2. спасибо, после игры с ним мне удалось заставить его работать. большое спасибо