Zuerst möchte ich einfach ein Objekt innerhalb des aktuellen Objekts, das ich an meine back-end
senden.Unerreichter Parameter in Rails 5
Ich habe diese einfache JSON
(aus einem Formular generiert):
{
"name": "Project 1",
"project_criteria": [
{
"name": "Criterium 1",
"type": "Type 1",
"benefit": "1"
},
{
"name": "Criterium 2",
"type": "Type 2",
"benefit": "3"
}
]
}
Mein 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
Aber ich kann immer noch nicht Zugang project_criteria
Parameter wie Sie unten sehen können:
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 # <-----------
Hinweis:
By the way, ich schon criterium statt Kriterien (die zu verwenden versucht - meiner Meinung nach - ist das Richtige, da es plural sein sollte) in has_many
und accepts_nested_attributes_for
, aber es funktioniert auch nicht.
Hat jemand eine Lösung dafür?
Danke für die Antwort, aber mit beiden Möglichkeiten, die Sie vorschlagen ed gibt: 'ActiveRecord :: AssociationTypeMismatch (ProjectCriterium (# 39449900) erwartet, habe Array (# 17940440)):' – developer033
Ich vermute, Sie übergeben JSON als Hash? Das mag dumm klingen, aber ... wenn Sie ein Array am Ende wollen, übergeben Sie einen Hash (mein Beispiel). Wenn Sie am Ende einen Hash haben wollen, übergeben Sie ein Array (das scheint das zu sein, was Sie wollen), also ersetzen Sie einfach die Curlies durch eckige Klammern und versuchen Sie es. – MarsAtomic
Nun, ich passierte den Weg, den ich im ersten Teil meiner Frage geschrieben hatte, aber es kommt als 'hash' (' "project_criteria" => {"0" => {"benefit" => "1", " Name "=>" Kriterium 1 "," Typ "=>" Typ 1 "}," 1 "=> {" Nutzen "=>" 3 "," Name "=>" Kriterium 2 "," Typ "=> "Typ 2"}}}} '). Übrigens, ich möchte am Ende ein Array haben ... aber leider geben beide Ihre Vorschläge mir diesen Fehler. – developer033