Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 维护基于树的导航轨道的状态_Jquery_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Jquery 维护基于树的导航轨道的状态

Jquery 维护基于树的导航轨道的状态,jquery,ruby-on-rails,ruby,ruby-on-rails-3,Jquery,Ruby On Rails,Ruby,Ruby On Rails 3,我有一个基于树的导航,我想跨越一个控制器的各种行动。但是,当我通过单击链接转到另一个操作时,我基于树的结构将崩溃 我怎样才能维持这个状态 以下是代码(如果需要): .three.columns %ul(class = "continent_name") - @destinations.group_by(&:continent).each do |continent, ds_per_continent| %li=link_to continent, "#"

我有一个基于树的导航,我想跨越一个控制器的各种行动。但是,当我通过单击链接转到另一个操作时,我基于树的结构将崩溃

我怎样才能维持这个状态

以下是代码(如果需要):

.three.columns
  %ul(class = "continent_name")
    - @destinations.group_by(&:continent).each do |continent, ds_per_continent|
      %li=link_to continent, "#"
      %ul(class = "country_name")
        - ds_per_continent.group_by(&:country).each do |country, ds_per_country|
          %li=link_to country, "#"
          %ul(class = "city_name")
            - ds_per_country.each do |destination|
              %li=link_to destination.name, destination_path(destination)
当我转到目标路径时,我希望国家名称可见,而不是所有内容都已折叠。如何做到这一点

控制器代码

class DestinationsController < ApplicationController
    before_filter :find_destination, :except => [:index]
    before_filter :all_destinations

    def index   
    end

    def show
        @photos = @destination.destination_photos.all
        cookies['destination_id'] = params[:id]
    end

    def photos_videos
        @photos = @destination.destination_photos.all
    end

    def topic_blog
        @topics = Topic.all
    end

    private

    def find_destination
        @destination = Destination.find(params[:id])
    end

    def all_destinations
        @destinations = Destination.all
        cookies['destination_id'] = params[:id]
    end
end
$(document).ready(function(){
    $('.country_name').hide();
    $('.city_name').hide();
    $('li').click(function() {
        $(this).next('ul').toggle();
    });

    $('.city_name').click(function(){
    $('.destination').append();
    });
});
型号

class Destination < ActiveRecord::Base

    alias_attribute :city, :name
    validates :continent,   :presence   => true
    validates :country,     :presence   => true

end

在导航控制器中使用
cookies
方法。要展开的节点应在cookie中注册,例如

cookies['country_id'] = params[:country_id]
然后在JS端,您可以使用中提供的
$.cookie
函数轻松提取节点,例如:


是的,控制器代码中有一个错误-我修复了它,希望现在它能工作。另外,我不知道您的导航控制器代码是什么样子的,所以我不确定应该在cookie中记住哪个变量。我正在用控制器代码更新我的问题。请看一下itI。我看不到控制器和视图之间的对应关系。此外,用于扩展树节点的jQuery/JS代码也会有所帮助。您是否使用任何插件?使用JS代码和模型代码更新了代码,我没有使用任何插件。当我将鼠标悬停在树节点上,将我带到目标控制器中的“显示”操作时,它看起来像localhost:3000/destination/id
cookies['country_id'] = params[:country_id]
$.cookie('country_id');