我有一个表单,我正在尝试通过复选框提交语言列表,这些语言将作为数组提交,在控制器中序列化并保存到数据库。
根据文档,我应该可以使用
<%= 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关联来完成,但我现在有理由想这样做。
先谢谢
答案 0 :(得分:1)
文档声明:
它的意图是该方法返回一个整数,如果该整数大于零,则选中该复选框。
您可能需要查看collection_check_boxes
:
f.collection_check_boxes :languages, {'EN': 'EN', 'ES': 'ES', 'US': 'US'}, :key, :value
我还没有运行该代码,并且能够删除散列中的重复是好的,但它需要一个可以调用方法的对象。