2013-02-08 4 views
9

Diciamo che sono due modelli rotaie con associazione:Ember.js/Rails e associazioni: come inviare nuovamente a Rails un record e le sue associazioni?

class Foo < ActiveRecord::Base 
    attr_accessible :name 

    belongs_to :moo 
end 

class Moo < ActiveRecord::Base 
    attr_accessible :name 

    has_many :foos 
    accepts_nested_attributes_for :foos 
end 

Grazie a ActiveModel :: Serializer è facile per inviare oggetti nidificati esistenti da Rails per Ember.js. Ma non riesco a trovare un modo per creare tali oggetti nidificati in Ember e inviarli di nuovo a Rails per la persistenza. La mia comprensione è Ember ha bisogno di inviare qualcosa del tipo:

"moo"=> { 
    "foos_attributes"=>{"0"=>{"name" => ...}}, 
    "name" => ... 
} 

Esiste un modo "standard" per farlo? Ho visto alcune "vecchie" domande su questo argomento ma nessuna vera soluzione, e dal momento che Ember ha cambiato così tanto ho pensato che potrebbe esserci un modo semplice per farlo ora (senza cambiare l'adattatore stesso).

Grazie mille, PJ

+0

È possibile utilizzare brace-dati per esso. Qui, leggi le relazioni in ember-data. http://emberjs.com/guides/models/defining-models/#toc_one-to-one – xamenrax

+0

Grazie Nikita. Sfortunatamente non funziona davvero ... Conosco l'adattatore Rest e il fatto che puoi includere record annidati. Ma non ti permetterà di inviare solo un POST al server sia per il record padre che per quelli nidificati. Spara sempre più POST - almeno non ho trovato un modo per farlo. Quindi non funzionerà con Rails se usi accept_nested_attributes_for sul lato Rails. – PJC

+0

Stessa situazione con i documenti mongoDB incorporati. – xamenrax

risposta

2

Ho appena modificato i params prima di consegnarli al create o update_attributes metodi come questo:

line_items = params[:invoice].delete(:line_items) #Ember format 
    params[:invoice][:line_items_attributes] = line_items