【发布时间】:2012-11-11 16:29:03
【问题描述】:
我是 ember 的新手,从昨天开始我就一直在摸索。 我想使用带有序列化程序的 ember 和 rails 制作一个简单的博客示例。
我已经能够为帖子制作 CRUD,没问题。大部分代码都在路由器中。
我的 cmets 有这样声明的问题:
App.Comment = DS.Model.extend
body: DS.attr('string')
post: DS.belongsTo('App.Post')
App.Post = DS.Model.extend
title: DS.attr('string')
body: DS.attr('string')
comments: DS.hasMany('App.Comment',embedded: true)
显示帖子的 cmets 是可以的,路线看起来像:/#/posts/:id/cmets。
新评论链接在 cmets 列表的底部,因此创建新评论的路径是:
/#/posts/:id/cmets/new
那时我遇到了问题:我如何告诉 ember-data 哪个帖子拥有该评论?我的意思是这样做的最佳做法是什么?
最后我决定在显示表单之前初始化comment.post_id,在路由器中对其进行编码。它看起来像:
create: Em.Route.extend
route: '/new'
connectOutlets: (router, context) ->
transaction = router.get('store').transaction()
comment = transaction.createRecord(App.Comment)
comment.set('post_id', router.get('postController').get('id'))
router.get('applicationController').set('transaction', transaction)
router.get('commentsController').connectOutlet
viewClass: App.EditCommentView
controller: router.get('commentController')
context: comment
save: (router, event) ->
router.get('applicationController.transaction').commit()
router.transitionTo('index')
但是不行,回到服务器,post请求没有post_id的值。
我尝试在表单中为 post_id 添加一个输入字段,以便在保存之前检查该值,并且该值存在且正确。
我尝试调试提交表单时触发的路由器中的保存功能。这里的 post_id 值也是正确的。
我一定错过了什么,但我不知道是什么.....
菲利普
【问题讨论】:
标签: ruby-on-rails ember.js ember-data