Запоминание состояния древовидного меню при обновлении страницы в ruby - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть меню в виде дерева в ruby.Я расширяю дерево, и оно работает хорошо.При обновлении страницы она рушится и моего расширения не видно.Пожалуйста, дайте мне знать, если есть способ запомнить состояние дерева.

код моего вида:

%table.treeTable
%thead
%th
  All:
  = link_to "Expand", "#", :class => "all_action_expand"
  = "/"
  = link_to "Collapse", "#", :class => "all_action_collapse"
%th
  = link_to "Check", "#", :class => "check_all"
  = "/"
  = link_to "Uncheck", "#", :class => "uncheck_all"


%tbody 
- Ic.make_tree(@ics).values.each do |root|
  %tr{:id => root.tree_id, :class => "root"}
    %td= root.root_name
    - if show_check_boxes
      %td= check_box_tag "ic_glob", root.tree_id, false, :class => "ic_parent"
  - root.suites.each do |suite|
    %tr{:id => suite.tree_id, :class => "child-of-#{root.tree_id}"}
      %td= suite.suite_name
      - if show_check_boxes
        %td= check_box_tag "ic_glob", suite.tree_id, false, :class => "ic_parent"
    - suite.children.each do |case_item|
      %tr{:id => case_item.tree_id, :class => "child-of-#{suite.tree_id}"}
        %td= case_item.case_name
        - if show_check_boxes
          %td= check_box_tag "ic_glob", case_item.tree_id, false, :class => "ic_parent"
      - case_item.children.each do |ic|
        %tr{:id => ic.id, :class => "child-of-#{case_item.tree_id}"}
          %td= link_to ic.name, edit_ic_path(ic.id)
          - if show_check_boxes
            %td= check_box_tag "ic_ids[]", ic.id, false
  /Execute the tree table javascript (hackish)
  = javascript_tag "$('.treeTable').treeTable({persist:true})"
  / Need some Ic javascript to (cascading selects, etc.)
  = javascript_include_tag "pages/ic"
  = javascript_include_tag "jquery.cookie"

1 Ответ

0 голосов
/ 23 сентября 2011

Вы можете использовать куки для хранения фактического состояния вашего дерева. Когда вы перезагрузите страницу, прочитайте куки и восстановите расширение.

EDIT:

Вам нужен плагин jquery-cookie , затем используйте параметр persist для автоматического восстановления расширений дерева после перезагрузки:

$(".example").treeTable({
  persist: true
});
...