Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未经许可的参数客户标识_Ruby On Rails_Ruby On Rails 4_Strong Parameters - Fatal编程技术网

Ruby on rails 未经许可的参数客户标识

Ruby on rails 未经许可的参数客户标识,ruby-on-rails,ruby-on-rails-4,strong-parameters,Ruby On Rails,Ruby On Rails 4,Strong Parameters,超级简单,愚蠢的事情,我现在一个多小时都想不出来了: 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

超级简单,愚蠢的事情,我现在一个多小时都想不出来了:

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"}

表单未将
客户ID
参数作为数组发送

"user"=>{"customer_ids"=>"84"}
这就是为什么。应该是(注意方括号):

如果将参数声明为数组,则应将其作为数组发布。这可能是您的表单中的一个问题

通常,我会用复选框来表示类似的内容,但这取决于您的用户界面。我过去也做过类似的事情

= f.collection_check_boxes :customers, customers, :id, :name do |cb|
  = cb.label
    span.pull-right = cb.check_box

查看Rails中的集合表单帮助程序。multiselect应该可以工作,但我没有这样使用。

您的表单没有将
客户ID
参数作为数组发送

"user"=>{"customer_ids"=>"84"}
这就是为什么。应该是(注意方括号):

如果将参数声明为数组,则应将其作为数组发布。这可能是您的表单中的一个问题

通常,我会用复选框来表示类似的内容,但这取决于您的用户界面。我过去也做过类似的事情

= f.collection_check_boxes :customers, customers, :id, :name do |cb|
  = cb.label
    span.pull-right = cb.check_box

查看Rails中的集合表单帮助程序。multiselect应该可以工作,但我没有这样使用过。

试着像这样更改您的
select
标记

= f.select(:customer_ids, customers.collect { |c| [ c.name, c.id ] }, 
                          { prompt: "Select Customer"}, 
                          { multiple: true, size: 5, class: 'form-control' })

尝试像这样更改
选择
标记

= f.select(:customer_ids, customers.collect { |c| [ c.name, c.id ] }, 
                          { prompt: "Select Customer"}, 
                          { multiple: true, size: 5, class: 'form-control' })


…permit(customer\u id:[])
是正确的语法。您的代码中还出现了其他问题。我建议你去别处看看。我能想到的另一件事是,由于某种原因,该列未被识别为数组。请像这样尝试
def user\u params.require(:user).permit(:customer\u id=>[])#pg array column end
@Mohamad where?我的意思是,我调试了它,一切看起来都很好,但它要么显示未经许可的参数,要么,当我更改为
permit(:customer\u id)
时,它只是不更新
customer\u id
,我认为在这种情况下
。permit(:customer\u id)
应该在表单字段
options\u from\u collection\u中添加
{/code>,以供选择(customers,'id','name',user.customer\u id),{},{include\u blank:'Select customer',multiple:true,size:15},class:'form control'
。应该可以。试试这个
…允许(customer\u id:[])
是正确的语法。您的代码中还存在其他问题。我建议您去别处看看。我能想到的另一件事是,出于某种原因,该列未被识别为数组。请这样尝试
def user\u params.require(:user).permit(:customer\u id=>[])#pg array column end
@Mohamad where?我的意思是我调试了它,看起来一切都很好,但它要么显示未经许可的参数,要么,当我更改为
permit(:customer_id)
时,它只是不更新
customer_id
我认为在这种情况下
。permit(:customer_id)
应该添加
{
在表单字段
options\u from\u collection\u for\u select(customers,'id','name',user.customer\u id),{},{include\u blank:'select customer',multiple:true,size:15},class:'form control'
。应该可以。尝试一下他无法通过
访问它。允许(:customer\u id)
我得跑去送我儿子上学。我回来后会看的。否则我妻子会杀了我:D@AndreyDeineko这可能对你有帮助@Mohamed,没关系,我想出来了。再次感谢你指出!:)他无法通过
访问它。permit(:customer\u id)
他们跑去送我儿子上学。我回来后再看。否则我妻子会杀了我:D@AndreyDeineko这可能对你有帮助@Mohamed,没关系,我知道了。再次感谢您的指点!:)这仍然不会在参数中发送数组,不幸的是,您仍然在参数中以字符串形式获取ID吗?这是我最初的问题,在您获得解决方案之前,我仍然会这样做,作为一种解决方法,您可以在更改
许可证()后执行类似于
customer\u id=user\u params[:customer\u id]的操作
method to
.permit(:customer\u id)
这仍然不会在参数中发送数组,不幸的是,您仍然在参数中以字符串形式获取ID吗?这是我最初的问题,在得到解决方案之前,我仍然会这样做,作为一种解决方法,您可以执行类似于
customer\u id=user\u params[:customer\u id].拆分(“”)的操作
permit()
方法更改为
.permit(:客户ID)