Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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
Ruby on rails Rails+Ajax-基于组合框选择更新视图?_Ruby On Rails_Ruby On Rails 3_Jquery - Fatal编程技术网

Ruby on rails Rails+Ajax-基于组合框选择更新视图?

Ruby on rails Rails+Ajax-基于组合框选择更新视图?,ruby-on-rails,ruby-on-rails-3,jquery,Ruby On Rails,Ruby On Rails 3,Jquery,请注意,就ajax而言,我是一个完全的初学者,我只是想找到解决方法,所以请耐心听我说: 我有一个视图,其中包含一个组合框,它是通过集合\u select生成的,我在表单的一侧显示一些数据,这些数据基本上提供了有关用户选择的更多详细信息 我想要实现的是,一旦客户在组合中做出不同的选择,就能够在侧面更改该描述。基本上,了解当前选择是什么,从模型中请求数据,在屏幕上显示返回的数据 实现这一目标的最简单/最优雅的方式是什么?我认为对我来说,理解这个过程将是进入异步视图世界的一个很好的起点 谢谢 我认为在

请注意,就ajax而言,我是一个完全的初学者,我只是想找到解决方法,所以请耐心听我说:

我有一个视图,其中包含一个组合框,它是通过集合\u select生成的,我在表单的一侧显示一些数据,这些数据基本上提供了有关用户选择的更多详细信息

我想要实现的是,一旦客户在组合中做出不同的选择,就能够在侧面更改该描述。基本上,了解当前选择是什么,从模型中请求数据,在屏幕上显示返回的数据

实现这一目标的最简单/最优雅的方式是什么?我认为对我来说,理解这个过程将是进入异步视图世界的一个很好的起点


谢谢

我认为在这种情况下没有必要使用ajax。只需预加载所有描述值并将其存储在隐藏的div中:

<div class="description" id="choice1">
   description for choice1 ...
</div>

 ...
最后,在客户端,绑定到组合框的所需事件:

   // checkout documentation for other events, like select 
   $('some_id').change(function(data){
     $('div.description').css('display', 'none');

     var id = // get information about selected choice and figure out the id of description
     $('div.description#' + id).css('display', 'block');
   });
Chekout文档提供了确切的细节,但主要思想应该清楚。这样,您就可以为自己节省一些对服务器的不必要的请求

   // checkout documentation for other events, like select 
   $('some_id').change(function(data){
     $('div.description').css('display', 'none');

     var id = // get information about selected choice and figure out the id of description
     $('div.description#' + id).css('display', 'block');
   });