Szyny 4 Nie aktualizuje zagnieżdżonych atrybutów przez JSON
Przeszukałem pokrewne pytania i nadal mam problem z aktualizacją zagnieżdżonych atrybutów w szynach 4 do JSON zwróconych z mojego frontonu AngularJS.
Pytanie: Poniższy kod przedstawia JSON przekazany z AngularJS do modelu Kandydat w mojej aplikacji Rails4. Model Candidate ma wiele prac i próbuję zaktualizować model Works za pomocą modelu Candidate. Z jakiegoś powodu model Works nie aktualizuje się i mam nadzieję, że ktoś wskaże, czego mi brakuje. Dzięki za pomoc.
Oto json w interfejsie AngularJS dla kandydata:
{"id"=>"13", "nickname"=>"New Candidate", "works_attributes"=>[
{"title"=>"Financial Analyst", "description"=>"I did things"},
{"title"=>"Accountant", "description"=>"I did more things"}]}
Rails następnie tłumaczy ten JSON na następujący, dodając nagłówek kandydata, ale nie zawiera zagnieżdżonych atrybutów w nagłówku kandydata inie aktualizuje atrybutów works_attributes przez model kandydata:
{"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"}}
Kandydat_kontrolera.rb zawiera prostą aktualizację:
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
Model kandydata.rb zawiera następujący kod definiujący relację has_many z modelem prac:
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
I wreszcie, model works.rb definiuje drugą stronę relacji has_many:
class Work < ActiveRecord::Base
belongs_to :candidate
end
Doceniam każdą pomoc, jaką możesz zapewnić, ponieważ jestem pewien, że brakuje mi czegoś prostego.
Dzięki!