You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 06:22:40