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

时间:2016-03-18 10:14:01

标签: ruby-on-rails ruby-on-rails-4

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

根据文档,我应该可以使用

<%= 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 => [])

但在我的日志中,我从params获得的是"languages"=>"0",

我确定它显而易见的东西很少,所以任何帮助都会受到大力赞赏!

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

先谢谢

1 个答案:

答案 0 :(得分:1)

文档声明:

  

它的意图是该方法返回一个整数,如果该整数大于零,则选中该复选框。

您可能需要查看collection_check_boxes

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

我还没有运行该代码,并且能够删除散列中的重复是好的,但它需要一个可以调用方法的对象。