如何在Ruby中筛选数组指定元素并在Rails分组选择框中仅显示特定分类?
解决分组选择控件只显示特定分类的问题
嗨,我知道问题出在哪啦!你现在的筛选逻辑有个小问题,因为你的CATEGORIES里每个元素都是嵌套数组(比如["CategA:", ["a", "b"]]),不是单个字符串,所以你用i == 'CategA:'的判断永远不会成立,筛选后得到的是空数组,自然控件就没内容啦。
正确的筛选方式
你需要针对每个嵌套数组的第一个元素(也就是分类名称)来做判断,比如这样:
# 定义要保留的分类名称列表 allowed_categories = ['CategA:', 'CategB:'] # 筛选出符合条件的分类项 filtered_categories = CATEGORIES.select { |category| allowed_categories.include?(category.first) }
整合到Rails表单助手中
把筛选后的数组传入collection参数即可,完整代码如下:
= f.input :field_name, label: false, include_blank: false, collection: CATEGORIES.select { |cat| ['CategA:', 'CategB:'].include?(cat.first) }, as: :grouped_select, group_method: :last, input_html: { }
为什么这样有效?
category.first会取出每个嵌套数组里的分类名称字符串(比如"CategA:")include?方法会检查这个字符串是否在我们预先定义的允许列表里,符合条件的分类项才会被保留下来
这样修改后,你的分组选择控件就只会显示CategA和CategB这两个分类下的选项啦~
内容的提问来源于stack exchange,提问作者user984621
相关产品推荐
相关产品推荐

