Rails多选下拉框返回数组含空元素,如何移除?
解决Rails多选下拉框返回首个空元素的问题
嘿,我碰到过一模一样的问题!Rails的多选表单默认的小机制导致了这个空元素,给你两个实用的解决办法:
方法1:修改表单配置,禁用默认隐藏字段
Rails为了兼容“未选中任何选项”的提交场景,会自动给多选下拉框加一个值为空的隐藏input,这就是空元素的来源。你可以在表单的HTML选项里加上include_hidden: false来关掉这个默认行为:
<%= form.select(:to, options_for_select(GoContact.all.collect{|e| ["#{e.en_name} - #{e.cn_name}", e.email] }), {:include_blank => false}, {multiple: true, include_hidden: false} ) %>
方法2:在控制器层面过滤空元素
如果不想改动表单代码,也可以在处理参数的时候手动清理空值。比如在你的控制器参数白名单里做过滤:
def lalaemail_params params.require(:lalaemail).permit(to: []).tap do |permitted| # 移除数组里的所有空字符串 permitted[:to] = permitted[:to].reject(&:blank?) end end
两种方法都能解决问题,选你觉得顺手的就行~
内容的提问来源于stack exchange,提问作者gkeepa
相关产品推荐
相关产品推荐

