Ruby on rails 如何传递下拉列表中的选定值,并将其作为rails中级联下拉列表的参数进行访问
编辑: 我正在尝试实现级联下拉 在我的第一个下拉列表中,我得到了所有不同的名称Ruby on rails 如何传递下拉列表中的选定值,并将其作为rails中级联下拉列表的参数进行访问,ruby-on-rails,ruby,rubygems,Ruby On Rails,Ruby,Rubygems,编辑: 我正在尝试实现级联下拉 在我的第一个下拉列表中,我得到了所有不同的名称 <%= f.input :names, collection: names.distinctnames, :label => "Select Name" %> 在这里,我想添加另一个作用域,为所选名称提供城市 那么,如何在视图中选择数据并在下一个下拉列表中获取所有值呢 如果这是一个错误的方法,有人能给我推荐另一种方法吗 我的代码 <!DOCTYPE html> <html>
<%= f.input :names, collection: names.distinctnames, :label => "Select Name" %>
在这里,我想添加另一个作用域,为所选名称提供城市
那么,如何在视图中选择数据并在下一个下拉列表中获取所有值呢
如果这是一个错误的方法,有人能给我推荐另一种方法吗
我的代码
<!DOCTYPE html>
<html>
<head>
<script>
$(document).on('change', '#names_id', function(){
var custId = $(this).val();
return custId;
});
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-6 col-lg-offset-3">
<div class="panel panel-primary">
<div class="panle-heading">Panel Primary</div>
<div class="panel-body">
<%= simple_form_for @ruby, url:{action: 'create'}, html: {class: 'form'} do |f| %>
<%= f.select :names_id, options_for_select(Names.distinctnames), {}, {:multiple => true} %>
<%= f.select :city_name, options_for_select(Names.where(names_id: custId).pluck(:city_name)), {}, {:multiple => true} %>
<% end %>
</div>
</div>
</div>
</div>
<div>
</body>
</html>
在这里,在加载视图时,我得到了未定义的局部变量或方法“custId”<
如何将所有其他下拉列表加载为空,然后将所选下拉列表中的值绑定到第二个下拉列表。据我所知,您有多个下拉列表,但与下拉列表1中的所选值一样,获取的依赖关系将影响下拉列表2中的值,在这种情况下,到达控制器操作需要提交表单,如果我的想法是正确的,我有不止一个想法: 第一个 您将使用javascript或JQuery库将此动态行为添加到页面中,场景如下: 1-用户将选择值 2-选择时使用js触发actionListner 3-向服务器发送请求 4-根据发送到服务器的参数获取数据 5-绑定从服务器返回的数据后,启用下一个下拉列表 这个解决方案不需要你刷新页面,我认为这会让用户满意 第二种解决方案 您将把actionListner放在下拉列表中,并在用户选择value时提交表单 这需要在服务器端进行一点验证,再加上一点努力来保存填充的数据,如果有其他输入将它们保存在实例变量中,我的意思是@select_drop_1,并在输入中使用它们,因为用户会觉得值不会丢失 第三种解决方案 如果在用户打开表单后可以使用这些数据,我的意思是对这些数据进行分组,进行查询,根据这些不同的名称对城市进行分组,这样当用户选择名称时,一个简单的js代码将运行启用并将数据绑定到下一个下拉列表,依此类推 如果我是你,我会选择第一个或第三个选项,请原谅,因为我不知道你的应用程序的模式,我不知道它是否适用于分组,我想象名称得到了它的表,还有一个叫做City的表
希望能有帮助 表单不需要提交,一个简单的ajax调用就足够了。我想这就是你在第一篇文章中的意思,但你的开场白有点夸张misleading@engineersmnky我完全同意你的观点,所以我并不真的喜欢这个解决方案,而是使用ajax@engineersmnky,您还可以提供一个使用ajax的示例吗
<!DOCTYPE html>
<html>
<head>
<script>
$(document).on('change', '#names_id', function(){
var custId = $(this).val();
return custId;
});
</head>
<body>
<div class="container">
<div class="row">
<div class="col-lg-6 col-lg-offset-3">
<div class="panel panel-primary">
<div class="panle-heading">Panel Primary</div>
<div class="panel-body">
<%= simple_form_for @ruby, url:{action: 'create'}, html: {class: 'form'} do |f| %>
<%= f.select :names_id, options_for_select(Names.distinctnames), {}, {:multiple => true} %>
<%= f.select :city_name, options_for_select(Names.where(names_id: custId).pluck(:city_name)), {}, {:multiple => true} %>
<% end %>
</div>
</div>
</div>
</div>
<div>
</body>
</html>