Rails 4 aktualisiert verschachtelte Attribute nicht über JSON
Ich habe verwandte Fragen durchforstet und habe immer noch ein Problem beim Aktualisieren von verschachtelten Attributen in Rails 4 über JSON, die von meinem AngularJS-Frontend zurückgegeben wurden.
Frage: Der folgende Code beschreibt, wie JSON in meiner Rails4-App von AngularJS an das Kandidatenmodell übergeben wurde. Das Kandidatenmodell enthält viele Works, und ich versuche, das Works-Modell über das Kandidatenmodell zu aktualisieren. Aus irgendeinem Grund kann das Works-Modell nicht aktualisiert werden, und ich hoffe, dass jemand darauf hinweisen kann, was mir fehlt. Danke für Ihre Hilfe.
Hier ist der Json im AngularJS-Frontend für den Kandidaten:
{"id"=>"13", "nickname"=>"New Candidate", "works_attributes"=>[
{"title"=>"Financial Analyst", "description"=>"I did things"},
{"title"=>"Accountant", "description"=>"I did more things"}]}
Rails übersetzt dann diesen JSON in den folgenden Code, indem der Kandidatenkopf hinzugefügt wird, schließt jedoch die verschachtelten Attribute unter dem Kandidatenkopf und nicht einkann die works_attributes nicht über das Kandidatenmodell aktualisieren:
{"id"=>"13", "nickname"=>"New Candidate", "works_attributes"=>[
{"title"=>"Financial Analyst", "description"=>"I did things"},
{"title"=>"Accountant", "description"=>"I did more things"}],
"candidate"=>{"id"=>"13", "nickname"=>"New Candidate"}}
Die Candidate_controller.rb enthält ein einfaches Update:
class CandidatesController < ApplicationController
before_filter :authenticate_user!
respond_to :json
def update
respond_with Candidate.update(params[:id], candidate_params)
end
private
def candidate_params
params.require(:candidate).permit(:nickname,
works_attributes: [:id, :title, :description])
end
end
Das Modell candidate.rb enthält den folgenden Code, der die Beziehung has_many zum Arbeitsmodell definiert:
class Candidate < ActiveRecord::Base
## Model Relationships
belongs_to :users
has_many :works, :dependent => :destroy
## Nested model attributes
accepts_nested_attributes_for :works, allow_destroy: true
## Validations
validates_presence_of :nickname
validates_uniqueness_of :user_id
end
Und schließlich definiert das works.rb-Modell die andere Seite der has_many-Beziehung:
class Work < ActiveRecord::Base
belongs_to :candidate
end
Ich freue mich über jede Hilfe, die Sie leisten können, da ich mir sicher bin, dass mir etwas ziemlich Einfaches fehlt.
Vielen Dank!