Rails使用options_for_select时如何设置select_tag下拉框默认选中值
解决方案
你遇到的问题由两处错误导致,按以下步骤修改即可实现预期效果:
- 首先修正下拉选项的文本笔误:现有代码里的选项文本写为
"from 3.0000.000",多了一个0,直接改成你需要展示的"from 3.000.000"即可,700万对应的选项文本同步修改。 - 其次修正选中逻辑:
options_for_select的第二个参数本身就用于指定要选中的选项值,不需要额外加selected: 'salary'配置,不生效的核心原因是参数类型不匹配:你设置的选项值是整数类型的3_000_000/7_000_000,而params[:salary]默认是字符串类型,类型不一致时无法匹配到对应选中项,转为整数即可。
修改后的代码参考如下:
如果你需要页面加载默认选中300万的选项:
= select_tag(:salary, options_for_select( [["from 3.000.000", 3_000_000], ["from 7.000.000", 7_000_000]], 3_000_000 ), class:"form-select bg-light h-100")
如果你需要根据params[:salary]动态选中对应选项:
= select_tag(:salary, options_for_select( [["from 3.000.000", 3_000_000], ["from 7.000.000", 7_000_000]], params[:salary]&.to_i ), class:"form-select bg-light h-100")
内容的提问来源于stack exchange,提问作者Hà Mai
相关产品推荐
相关产品推荐

