Mysql 未在Rails和Backbone.js之间传递数据库id
我正在使用Rails 3.1和Backbone.js创建一个应用程序。使用从数据库(通过Rails控制器)提取的模型集合,我将从数据库到javascript获取每个属性。但是使用相同的方法和代码对另一个模型执行相同的操作,我不会获取第二个模型的数据库“id” 以下是有效的代码:Mysql 未在Rails和Backbone.js之间传递数据库id,mysql,ruby-on-rails-3,json,backbone.js,Mysql,Ruby On Rails 3,Json,Backbone.js,我正在使用Rails 3.1和Backbone.js创建一个应用程序。使用从数据库(通过Rails控制器)提取的模型集合,我将从数据库到javascript获取每个属性。但是使用相同的方法和代码对另一个模型执行相同的操作,我不会获取第二个模型的数据库“id” 以下是有效的代码: window.Post = Backbone.Model.extend urlRoot: '/posts' defaults: author_id: 2 window.Posts = Backbo
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
respond_to :html, :json, :js
def index
@users = @account.users
respond_with(@users)
end
通过上面的操作,我得到了一个从数据库中提取的具有id属性的模型,但下面不包含用户模型的id属性
这不是:
window.User = Backbone.Model.extend
urlRoot: '/members'
window.Users = Backbone.Collection.extend
model: User
url: '/members'
控制器:
respond_to :html, :json, :js
def index
@posts = current_user.posts
respond_with(@posts.to_json(:include => {:account => {:only => :institution}}))
end
respond_to :html, :json, :js
def index
@users = @account.users
respond_with(@users)
end
尝试在您的模型上设置_id。请看这里: i属性 model.idAttribute:存储模型的唯一标识符 在id属性下。如果你直接和一个 后端(CouchDB、MongoDB)使用不同的唯一密钥,您可以 将模型的idAttribute设置为透明地从该键映射到id
当您的模型从数据库返回应用程序时,主干将看到该密钥并自动更新您的model.id。例如,我使用mongodb,必须设置model.idAttribute=“\u id”。谢谢您的帮助,这就是问题所在。Rails'to_json和/或respond_with(@user)正在删除'id'属性。我通过[链接]找到了解决方案http://stackoverflow.com/questions/3719041/how-to-customize-to-json-response-in-rails-3[链接] 基本上,我在模型中创建了一个“as_json”方法,并确保它返回包含我的id的属性散列