表单中的多个复选框以返回数组,但在 Rails 中返回 0



我有一个表单,我正在尝试通过复选框提交一个语言列表,该列表将作为数组提交,在控制器中序列化并保存到DB。

根据文档,我应该能够使用

<%= f.check_box :languages, {multiple: true}, "EN", nil %>
<%= f.check_box :languages, {multiple: true}, "ES", nil %>
<%= f.check_box :languages, {multiple: true}, "US", nil %>

这给出了 HTML

 <input type="checkbox" value="EN" name="service[languages][]" id="service_languages_en">
 <input type="checkbox" value="ES" name="service[languages][]" id="service_languages_es">
 <input type="checkbox" value="US" name="service[languages][]" id="service_languages_us">

在控制器中

params.require(:service).permit(..., :languages => [])

但是在我的日志中,我从参数中得到的只是"languages"=>"0",

我确定它缺少一些明显的东西,所以任何帮助将不胜感激!

我知道它可以(并且可能应该)通过has_many关联来完成,但我现在有理由想这样做。

提前致谢

文档指出:

该方法旨在返回一个整数,如果该整数大于零,则选中该复选框。

您可能想看看collection_check_boxes

f.collection_check_boxes :languages, {'EN': 'EN', 'ES': 'ES', 'US': 'US'}, :key, :value

我没有运行该代码,能够删除哈希中的重复会很好,但它需要一个我认为可以调用方法的对象。

最新更新