我正在使用Rails 3.1和Backbone.js来创建一个应用程序。使用从数据库中提取的模型集合(通过Rails控制器),我将数据库中的每个属性都添加到javascript中。但使用相同的方法和代码与另一个模型做同样的事情,我没有得到第二个模型的数据库'id'。
以下是正在运行的代码:
window.Post = Backbone.Model.extend
urlRoot: '/posts'
defaults:
author_id: 2
window.Posts = Backbone.Collection.extend
model: Post
url: '/posts'
控制器:
respond_to :html, :json, :js
def index
@posts = current_user.posts
respond_with(@posts.to_json(:include => {:account => {:only => :institution}}))
end
有了上面这个,我得到一个带有从数据库中提取的id属性的模型,但是下面不包含User模型的id属性
这不是:
window.User = Backbone.Model.extend
urlRoot: '/members'
window.Users = Backbone.Collection.extend
model: User
url: '/members'
控制器:
respond_to :html, :json, :js
def index
@users = @account.users
respond_with(@users)
end
答案 0 :(得分:1)
尝试在您的模型上设置_id。见这里:
http://documentcloud.github.com/backbone/#Model-idAttribute
<强> idAttribute 强> model.idAttribute:存储模型的唯一标识符 在id属性下。如果你直接与a通信 您可以使用不同的唯一键的后端(CouchDB,MongoDB) 设置Model的idAttribute以透明地从该键映射到id。
当您的模型从数据库返回到应用程序时,骨干网将看到该密钥并自动更新您的model.id.例如,我使用mongodb并且必须设置model.idAttribute =“_ id”。
答案 1 :(得分:0)
感谢您的帮助,这就是问题所在。 Rails的to_json和/或respond_with(@user)正在删除'id'属性。我通过[link] http://stackoverflow.com/questions/3719041/how-to-customize-to-json-response-in-rails-3 [link]找到了解决方案。
基本上我在我的模型中创建了一个方法'as_json',并确保它返回了包含我的id的属性哈希。