如何使用belongsTo创建记录与Ember.js的关联&;轨道?

如何使用belongsTo创建记录与Ember.js的关联&;轨道?,ember.js,ember-data,Ember.js,Ember Data,我在使用belongsTo关联时遇到问题,并使用Ember.js和Ember数据向Rails控制器发送外键。我的Ember.js控制器将向Rails控制器发送项目名称,但不发送client_id值。在Rails控制器中,params[:project][:client_id]的值为nil 救命啊!我哪里做错了 型号: DA.Project = DS.Model.extend name: DS.attr('string') client: DS.belongsTo('DA.Client')

我在使用belongsTo关联时遇到问题,并使用Ember.js和Ember数据向Rails控制器发送外键。我的Ember.js控制器将向Rails控制器发送项目名称,但不发送client_id值。在Rails控制器中,params[:project][:client_id]的值为nil

救命啊!我哪里做错了

型号:

DA.Project = DS.Model.extend
  name: DS.attr('string')
  client: DS.belongsTo('DA.Client')

DA.Client = DS.Model.extend
  name: DS.attr('string')
  projects: DS.hasMany('DA.Project')
DA.ProjectsController = Em.ArrayController.extend  
  createProject: (project) ->
    @transaction = DA.store.transaction()
    p = @transaction.createRecord(DA.Project, project)
    validation_errors = p.validate()

    if validation_errors
      DA.displayError validation_errors
    else
      @transaction.commit()
DA.ProjectsNew = Em.View.extend
  tagName: 'form'
  templateName: 'projects/new'

  init: ->
    @_super()

  didInsertElement: ->
    @_super()

  submit: (event) ->
    event.preventDefault()
    project = {}
    project.name = @get('name')
    project.client = @get('client_id')

    DA.ProjectsController.createProject(project)
{{view Em.TextField valueBinding="view.name" placeholder="Project Name" tabindex="1"}}
{{view Em.TextField valueBinding="view.client_id" placeholder="Client ID" tabindex="2"}}
<button type="submit">Create</button>
控制器:

DA.Project = DS.Model.extend
  name: DS.attr('string')
  client: DS.belongsTo('DA.Client')

DA.Client = DS.Model.extend
  name: DS.attr('string')
  projects: DS.hasMany('DA.Project')
DA.ProjectsController = Em.ArrayController.extend  
  createProject: (project) ->
    @transaction = DA.store.transaction()
    p = @transaction.createRecord(DA.Project, project)
    validation_errors = p.validate()

    if validation_errors
      DA.displayError validation_errors
    else
      @transaction.commit()
DA.ProjectsNew = Em.View.extend
  tagName: 'form'
  templateName: 'projects/new'

  init: ->
    @_super()

  didInsertElement: ->
    @_super()

  submit: (event) ->
    event.preventDefault()
    project = {}
    project.name = @get('name')
    project.client = @get('client_id')

    DA.ProjectsController.createProject(project)
{{view Em.TextField valueBinding="view.name" placeholder="Project Name" tabindex="1"}}
{{view Em.TextField valueBinding="view.client_id" placeholder="Client ID" tabindex="2"}}
<button type="submit">Create</button>
查看:

DA.Project = DS.Model.extend
  name: DS.attr('string')
  client: DS.belongsTo('DA.Client')

DA.Client = DS.Model.extend
  name: DS.attr('string')
  projects: DS.hasMany('DA.Project')
DA.ProjectsController = Em.ArrayController.extend  
  createProject: (project) ->
    @transaction = DA.store.transaction()
    p = @transaction.createRecord(DA.Project, project)
    validation_errors = p.validate()

    if validation_errors
      DA.displayError validation_errors
    else
      @transaction.commit()
DA.ProjectsNew = Em.View.extend
  tagName: 'form'
  templateName: 'projects/new'

  init: ->
    @_super()

  didInsertElement: ->
    @_super()

  submit: (event) ->
    event.preventDefault()
    project = {}
    project.name = @get('name')
    project.client = @get('client_id')

    DA.ProjectsController.createProject(project)
{{view Em.TextField valueBinding="view.name" placeholder="Project Name" tabindex="1"}}
{{view Em.TextField valueBinding="view.client_id" placeholder="Client ID" tabindex="2"}}
<button type="submit">Create</button>
模板:

DA.Project = DS.Model.extend
  name: DS.attr('string')
  client: DS.belongsTo('DA.Client')

DA.Client = DS.Model.extend
  name: DS.attr('string')
  projects: DS.hasMany('DA.Project')
DA.ProjectsController = Em.ArrayController.extend  
  createProject: (project) ->
    @transaction = DA.store.transaction()
    p = @transaction.createRecord(DA.Project, project)
    validation_errors = p.validate()

    if validation_errors
      DA.displayError validation_errors
    else
      @transaction.commit()
DA.ProjectsNew = Em.View.extend
  tagName: 'form'
  templateName: 'projects/new'

  init: ->
    @_super()

  didInsertElement: ->
    @_super()

  submit: (event) ->
    event.preventDefault()
    project = {}
    project.name = @get('name')
    project.client = @get('client_id')

    DA.ProjectsController.createProject(project)
{{view Em.TextField valueBinding="view.name" placeholder="Project Name" tabindex="1"}}
{{view Em.TextField valueBinding="view.client_id" placeholder="Client ID" tabindex="2"}}
<button type="submit">Create</button>
{{view Em.TextField valueBinding=“view.name”placeholder=“Project name”tabindex=“1”}
{{view Em.TextField valueBinding=“view.client_id”placeholder=“client id”tabindex=“2”}
创造

submit
功能中,
project.client
被分配一个id,而不是
DA.client
实例。
如果假定
DA.Client
实例是预先存在的,则可以通过
DA.store.find(DA.Client,@get('Client_id'))
获取该实例。请注意,根据绑定对象的方式,您可以选择与正在创建的对象关联的对象,当您只希望获得ID时,Ember可能会自动为您提供对象。例如,使用Ember.Forms.Select视图绑定,此示例中的client_ID值将是实际的客户端对象实例,而不仅仅是ID

如果随后在App.store.find()调用中盲目使用此对象,您将得到一个从未实现的承诺对象,其ID设置为原始对象的序列化。如果您随后尝试提交此文件,它将尝试保持以下内容:

"field_id":"<App.Type:ember123:1>"
“字段id”: