对两个具有相同类别的选择框进行边栏,但一个值的选择不会显示在另一个选择框中

rails two select boxes with same category but selection of one value does not show in another

本文关键字:选择 一个 另一个 显示 两个 同类      更新时间:2023-09-26

我得到了一个表单,其中包含来自同一类别模型的两个选择框

<%= collection_select(:c, :id1, @categories, :id, :name) %>
<%= collection_select(:c, :id2, @categories, :id, :name) %>


现在有没有办法确保在任何实例中仅从任何一个选择框中选择一个类别。

例如,如果从第一个选择框中选择"书籍",则第二个选择框不显示"书籍"值,反之亦然,或者
如果从第二个选择框中选择"音乐",则第一个选择框的值中不显示"音乐",反之亦然。

也就是说,在任何情况下,类别的选择都是完全独特的。

我相信这需要 JavaScript 的帮助,但这可以在控制器中单独完成还是需要两者的组合?

如果需要,您可以在没有控制器的情况下执行此操作。 使jQuery更改功能,它将在第二个选择中隐藏当前选项。 请记住防止在选择中只有一个隐藏选项

例:

  $("#c_id1").change(function(){
    $("#c_id2 option:hidden").show();
    if($(this).val().length ){
      $("#c_id2 option[value=" + $(this).val() + "]").hide();
    }
  });
  $("#c_id2").change(function(){
    $("#c_id1 option:hidden").show();
    if($(this).val().length ){
      $("#c_id1 option[value=" + $(this).val() + "]").hide();
    }
  });  

像这样的东西会起作用。好的将是重构这个。您应该添加提示以collection_select良好的工作,因为一开始没有此更改就具有相同的内容。