超级简单,愚蠢的事情,我现在想不到更多,而不是一个小时:
def user_params
params.require(:user).permit(customer_ids: []) # pg array column
end
我的表格:
= f.select :customer_ids,
options_from_collection_for_select(customers, 'id', 'name', user.customer_ids),
{ include_blank: 'Select customer', multiple: true, size: 15 },
class: 'form-control'
在更新用户时我正在
Unpermitted parameter: customer_ids
世界上有多大可能?
Parameters: {"utf8"=>"✓", "authenticity_token"=>"oCkUEi2pNajM0ydHUH2w6iYIq5eKjfCY5ig9U2qDTXxMqECCgQ2Dn9YtqkMqXlTmLl5q/OO8x23o/P50SnmgUg==", "user"=>{"customer_ids"=>"84"}, "commit"=>"Assign selected customer to user", "id"=>"2"}
答案 0 :(得分:2)
您的表单未以customer_ids
参数作为数组发送。
"user"=>{"customer_ids"=>"84"}
这就是原因。它应该是(注意方括号):
"user"=>{"customer_ids"=>"[84]"}
如果将param声明为数组,则应将其作为数组发布。这可能是您表单中的问题。
通常,我会使用复选框来做这样的事情,但这取决于你的用户界面。这是我过去做过的类似事情。
= f.collection_check_boxes :customers, customers, :id, :name do |cb|
= cb.label
span.pull-right = cb.check_box
查看Rails中的集合表单助手。多选应该有效,但我没有用这种方式。
答案 1 :(得分:0)
尝试更改此select
标记
= f.select(:customer_ids, customers.collect { |c| [ c.name, c.id ] },
{ prompt: "Select Customer"},
{ multiple: true, size: 5, class: 'form-control' })