问题描述:

I am using the ancestry gem and have followed the railscasts episode here to get the gem to work, which works perfectly.

I have created a fairly large ancestry tree, and although the parents and children are nested by indenting the fields, i prefer some sort of routing lines. The picture below show the small part of the total tree.

I would like to have a structure look like this/ or something similar

I tried to play around with the structure by adding lines, but i just seem to end up in smoke.

Each parent and child is given a separate div field like this(in a helper). just like the railscasts episode.

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

How can this be done, if possible. Any hints?

网友答案:

I would not try to create lines using div and css tricks. You are trying to build an element of a UI like a navigation tree. Just go all in on a real UI library like jsTree. Use rails to create the data structure (you've already done this), render a static HTML <ul> list (this should be easy to convert your <div>s to list elements). Then let javascript render the view of that data structure (lines etc) and you'll get interactivity and other stuff for free. :)

Here's the main site: http://www.jstree.com/

Check out this demo: http://www.jstree.com/documentation/core#demos

Look at the source of the page and you'll see <div id="demo2" ...> where the magic starts happening.

Installing JQuery and this plugin should be fairly easy in Rails 3 (in 3.1 you already have JQuery).

相关阅读:
Top