Rails_Admin 个相关下拉菜单

Rails_Admin related dropdowns

有没有办法根据另一个下拉列表的值过滤一个下拉列表?
例如,如果我们有: ClassStudent 模型,其中 Studentclass_id;有没有办法根据所选 Class 过滤下拉列表中显示的学生?

EDIT

显然,rails_admin gem 与我正在寻找的 association 关系;但它并不完美。

如果你可以使用Javascript,这个Railscast将帮助你:

在这种情况下,您的下拉菜单可能如下所示:

<%= f.collection_select :class_id, Class.all, :id, :name, {:prompt => "Select a Class"}, {:id => "class"} %>

<%= f.collection_select :student_id, Student.all, :id, :name, {:prompt => "Select a Student"}, {:id => "student"} %>

并且您将使用 Javascript 来更改学生下拉列表中的选项。您可以使用以下方法获取 class 的值:

class_id = $("#class").find(":selected").text()

给定两个 <select> 元素 "Class""Student"Student 列表包含 data-class_id 属性引用来自 Class 列表的值(参见下面的代码片段),您可以使用以下 vanilla-JavaScript 代码根据 "Class" 下拉列表的值过滤 "Student" 下拉列表:

var firstSelectId = "Class";
var secondSelectId = "Student";
var data_attr = "class_id";
this.addEventListener("DOMContentLoaded", function(event) {
  var firstSelect = document.getElementById(firstSelectId);
  var secondSelect = document.getElementById(secondSelectId);
  firstSelect.addEventListener("change", function(event) {
    var value = event.target.value;
    Array.prototype.forEach.call(secondSelect.options, function(item) {
      item.style.display = (item.dataset[data_attr] === value) ? 'inline' : 'none';
    });
    var selected = secondSelect.selectedOptions[0];
    if (selected && selected.dataset[data_attr] !== event.target.value) {
      secondSelect.selectedIndex = -1;
    }
  });
  firstSelect.dispatchEvent(new Event('change'));
});
<form id="myform">
  Select a class and student:
  <select id="Class">
    <option value="1">Class1</option>
    <option value="2">Class2</option>
    <option value="3">Class3</option>
  </select>
  <select id="Student">
    <option value="StudentA" data-class_id="1">A</option>
    <option value="StudentB" data-class_id="2">B</option>
    <option value="StudentC" data-class_id="3">C</option>
    <option value="StudentD" data-class_id="2">D</option>
    <option value="StudentE" data-class_id="1">E</option>
    <option value="StudentF" data-class_id="1">F</option>
  </select>
</form>

这是相关的 link: https://github.com/sferik/rails_admin/wiki/Associations-scoping 编辑了原始问题