まず、現在のオブジェクトの中にオブジェクトを入れて、私が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
しかし、私はまだできませんアクセスあなたは以下を参照することができますよう8パラメータ:
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)、Arrayを取得しました。(#17940440)): – developer033
JSONをハッシュとして渡していると思いますか?これはばかげて聞こえるかもしれませんが...最後に配列が必要な場合は、ハッシュを渡してください(私の例)。最後にハッシュが必要な場合は、配列(渡したいもの)を渡すので、中括弧を四角い中カッコで置き換えてショットを付けてください。 – MarsAtomic
さて、私は自分の質問の最初の部分に投稿しましたが、それは 'hash =' {"0" => {"benefit" = "" 1 " "タイプ" => "タイプ1"}、 "1" => {"利益" => "3"、 "名前" => "クリテリアム2"、 "タイプ" => "タイプ2"}}}} ')。ところで、私は最後に配列が欲しいですが、残念ながらあなたの提案の両方が私にそのエラーを与えます。 – developer033