5
首先,我想简单地获取当前对象内部的对象,并将其发送给我的back-end
。Rails 5中的未经允许的参数
我有这个简单的JSON
(从表单生成):
{
"name": "Project 1",
"project_criteria": [
{
"name": "Criterium 1",
"type": "Type 1",
"benefit": "1"
},
{
"name": "Criterium 2",
"type": "Type 2",
"benefit": "3"
}
]
}
我classes
:
class Project < ApplicationRecord
has_many :project_criteria
accepts_nested_attributes_for :project_criteria
end
class ProjectCriterium < ApplicationRecord
belongs_to :project
end
ProjectsController:
def project_params
params.require(:project).permit(:name, project_criteria: [])
end
但我仍然不能访问project_criteria
参数,你可以看到如下:
Started POST "/projects" for 127.0.0.1 at 2016-08-19 16:24:03 -0300
Processing by ProjectsController#create as HTML
Parameters: {"project"=>{"name"=>"Project 1", "project_criteria"=>{"0"=>{"benefit"=>"1", "name"=>"Criterium 1", "type"=>"Type 1"}, "1"=>{"benefit"=>"3", "name"=>"Criterium 2", "type"=>"Type 2"}}}}
Unpermitted parameter: project_criteria # <-----------
注:
顺便说一句,我已经尝试过使用绕圈,而不是标准(其中- 在我看来 -是正确的,因为它应该是复数)在has_many
和accepts_nested_attributes_for
,但它也不起作用。
有人有这方面的解决方案吗?
感谢您的答复,但使用两种方式,你建议ed给出:'ActiveRecord :: AssociationTypeMismatch(ProjectCriterium(#39449900)预计,得到数组(#17940440)):' – developer033
我想你是传递JSON作为散列?这可能听起来很愚蠢,但是...如果你想在最后一个数组,传递一个哈希(我的例子)。如果你最后想要一个散列,传递一个数组(这似乎是你想要的),所以只需用方括号替换这些数组,并给它一个镜头。 – MarsAtomic
嗯,我是通过我发布在我的问题的最初部分的那种方式,但它是作为'哈希'('“project_criteria”=> {“0”=> {“benefit”=>“1”名称“=>”标准1“,”类型“=>”类型1“},”1“=> {”benefit“=>”3“,”name“=>”Criteria 2“,”type“=> “Type 2”}}}}')。顺便说一下,我想在最后一个数组..但不幸的是,你的两个建议给我这个错误。 – developer033