Ich habe ein Problem mit dem Versuch, viele zu viele Beziehungen in Ember.js mit Glut-Daten und Schienen zu speichern. Die Assoziation funktioniert auf der Ember-Seite der Dinge gut, wenn ich jedoch versuche, die Transaktion zu begehen, wird sie die Liste der neuen Assoziationen nicht enthalten, wenn sie an Rails gesendet werden. Jede Hilfe würde sehr geschätzt werden, ich habe mir die Haare ausgerissen und versucht, eine Beispielanwendung zu finden, die etwas so einfaches auf GitHub tut, aber ich kann keinen finden.Viele zu viele Beziehungen mit Ember, Glut-Daten und Schienen
ist hier eine verdummte Version meines Ember Code:
App.Store = DS.Store.extend
revision: 11
adapter: DS.RESTAdapter.create
url: '/api'
App.Router.map ->
@resource 'rosters'
@resource 'users'
App.User = DS.Model.extend
rosters: DS.hasMany 'App.Roster'
App.Roster = DS.Model.extend
users: DS.hasMany 'App.User'
App.RostersEditRoute = Ember.Route.extend
setupController: (controller, model) ->
controller.set 'users_list', App.User.find()
App.RostersEditView = Ember.View.extend
userCheckbox: Em.Checkbox.extend
checkedObserver: (->
users = @get 'roster.users'
if @get 'checked'
users.addObject @get 'user'
else
users.removeObject @get 'user'
@get('controller.store').commit()
).observes 'checked'
bearbeitet Form:
each user in users_list
label.checkbox
view view.userCheckbox rosterBinding="current_roster" userBinding="user" | #{user.full_name}
Rails-Backend (Geerbt Ressourcen und Active Modell Serializer Edelsteine verwenden):
class User < ActiveRecord::Base
has_many :rosters_users
has_many :rosters, through: :rosters_users
accepts_nested_attributes_for :rosters
end
class RostersUser < ActiveRecord::Base
belongs_to :user
belongs_to :roster
end
class Roster < ActiveRecord::Base
has_many :rosters_users
has_many :users, through: :rosters_users
accepts_nested_attributes_for :users
end
module Api
class RostersController < BaseController
end
end
module Api
class UsersController < BaseController
end
end
module Api
class BaseController < ActionController::Base
inherit_resources
respond_to :json
before_filter :default_json
protected
# Force JSON
def default_json
request.format = :json if params[:format].nil?
end
end
end
class UserSerializer < BaseSerializer
has_many :rosters, embed: :ids
end
class RosterSerializer < BaseSerializer
has_many :users, embed: :ids
end
Also wie ich schon sagte, der Verein funktioniert gut auf Ember aber Schienen scheint nicht das neue zu bekommen Assoziationsdaten. Wenn ich die XHR Registerkarte im Web-Inspektoren überprüfen, ich sehe es nur diese gesendet:
Anfrage Payload { „Roster“: { „created_at“: „Do, 21. März 2013 23.16.02 GMT“, "team_id": "1"}}
Und ich bin mit einem 204 kein Inhalt Fehler zurückgegeben, weil nichts geändert hat.
Sehr prägnant und einfach die Antwort zu folgen, Dank für Ihre Hilfe danken! – McPants