Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 未在Rails和Backbone.js之间传递数据库id_Mysql_Ruby On Rails 3_Json_Backbone.js - Fatal编程技术网

Mysql 未在Rails和Backbone.js之间传递数据库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

我正在使用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
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的属性散列