ruby-on-rails - 如何从下拉列表中传递选定的值并将其作为参数访问以在 Rails 中级联下拉列表
问题描述
编辑: 我正在尝试实现级联下拉。
在我的第一个下拉列表中,我得到了所有不同的名称。
<%= f.input :names, collection: names.distinctnames, :label => "Select Name" %>
在选择名称时,如何访问值并将其传递给控制器/模型,以便我可以根据值进行过滤并将其绑定到下一个下拉列表。
在我的模型中,我有以下范围
scope :distinctnames, ->{ Names.distinct.pluck(:names)}
在这里,我想添加另一个范围,为所选名称提供城市。
那么,我将如何获取在我的视图中选择的数据并在下一个下拉列表中获取所有值。
如果这是错误的方法,有人可以建议我使用另一种方法和示例。
我的代码
<!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' for #<#
如何将所有其他下拉列表加载为空,然后将所选下拉值中的值绑定到第二个。
解决方案
据我了解,您有多个下拉列表,但得到的依赖项,Like selected
value fromdrop-down list 1
将影响中的值drop-down list 2
,在这种情况下,到达控制器操作将需要提交表单,如果我的想法是正确的我有不止一个想法:
第一
您将使用javascript
或JQuery
库将此动态行为添加到您的页面,场景将是这样的:
1-用户将选择值
2- anactionListner
使用js
when触发select
。
3-向服务器发送请求
4-根据您发送到服务器的参数获取数据
5-绑定服务器返回的数据后启用下一个下拉列表。
此解决方案不需要您刷新页面,我认为这会让用户满意。
第二种解决方案
当用户选择值时,您将放置actionListner
并drop-down
提交表单。
这将需要在您的服务器端进行一些验证,再加上一些努力来保存如果有其他输入时填充的数据(将它们保存在实例变量中,我的意思是喜欢@select_drop_1
并在输入中使用它们,因为用户会觉得值不是错过)。
第三个解决方案
如果可以在用户打开表单后使这些数据可用,我的意思是grouping
这个数据,进行查询,按这些不同的名称对城市进行分组,这样当用户选择一个名称时,一个简单的js
代码将运行启用和绑定数据到下drop-down
等等。
如果我是你,我会选择first
其中一个称为。third
grouping
City
希望能帮助到你。
推荐阅读
- javascript - 使用服务进行http响应错误时如何访问“this”
- java - 如何下载视频使其对应用程序私有(Android)
- html - 在新部分中创建的 CSS p 元素从具有自己的类名的不同部分继承属性
- sql - 如何从 BigQuery 表中获取与另一个表列相匹配的值的相应列加入?
- asp.net - 为什么生成的查询使用 [Project1]?
- python - 如何调整列表以使某些元素位于同一索引上?
- python - 使用学生姓名获取学生成绩
- java - 在 Spring 中安排批量邮件作业
- rust - 无法运行 bellperson crate -“无法为 `fff v0.2.2` 运行自定义构建命令”
- php - 在 apache ldap.conf 中设置连接属性后,如何在 PHP 中实现使用 LDAP 池连接?