不允许的参数 customer_ids
Unpermitted params customer_ids
超级简单,愚蠢的事情,我现在一个多小时都弄不明白:
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"}
您的表单没有以数组形式发送 customer_ids
参数。
"user"=>{"customer_ids"=>"84"}
这就是原因。它应该是(注意方括号):
"user"=>{"customer_ids"=>"[84]"}
如果将参数声明为数组,则应将其作为数组发布。这可能是您表单中的一个问题。
通常,我会为这样的事情使用复选框,但这取决于您的用户界面。这是我过去做过的类似事情。
= f.collection_check_boxes :customers, customers, :id, :name do |cb|
= cb.label
span.pull-right = cb.check_box
查看 Rails 中的收集表单助手。多选应该可以,但我没有这样用过。
尝试像这样更改您的 select
标签
= f.select(:customer_ids, customers.collect { |c| [ c.name, c.id ] },
{ prompt: "Select Customer"},
{ multiple: true, size: 5, class: 'form-control' })
超级简单,愚蠢的事情,我现在一个多小时都弄不明白:
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"}
您的表单没有以数组形式发送 customer_ids
参数。
"user"=>{"customer_ids"=>"84"}
这就是原因。它应该是(注意方括号):
"user"=>{"customer_ids"=>"[84]"}
如果将参数声明为数组,则应将其作为数组发布。这可能是您表单中的一个问题。
通常,我会为这样的事情使用复选框,但这取决于您的用户界面。这是我过去做过的类似事情。
= f.collection_check_boxes :customers, customers, :id, :name do |cb|
= cb.label
span.pull-right = cb.check_box
查看 Rails 中的收集表单助手。多选应该可以,但我没有这样用过。
尝试像这样更改您的 select
标签
= f.select(:customer_ids, customers.collect { |c| [ c.name, c.id ] },
{ prompt: "Select Customer"},
{ multiple: true, size: 5, class: 'form-control' })