Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Ruby on rails Backbone.js如何在我的Rails模型中保存数据?_Ruby On Rails_Backbone.js - Fatal编程技术网

Ruby on rails Backbone.js如何在我的Rails模型中保存数据?

Ruby on rails Backbone.js如何在我的Rails模型中保存数据?,ruby-on-rails,backbone.js,Ruby On Rails,Backbone.js,我将Rails与主干网结合使用,我学到了很多东西,但我遇到了一个无法解决的问题 我有两个模型,一个用户模型和一个电影模型 ActiveRecord::Schema.define(version: 20141016152516) do create_table "movies", force: true do |t| t.string "title" t.datetime "created_at" t.datetime "updated_at" t.int

我将Rails与主干网结合使用,我学到了很多东西,但我遇到了一个无法解决的问题

我有两个模型,一个用户模型和一个电影模型

ActiveRecord::Schema.define(version: 20141016152516) do

  create_table "movies", force: true do |t|
    t.string   "title"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "user_id"
  end

  create_table "users", force: true do |t|
    t.string   "name"
    t.string   "email"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "password_digest"
    t.string   "remember_digest"
  end

  add_index "users", ["email"], name: "index_users_on_email", unique: true

end
用户模型有很多电影,电影模型属于用户

我一直在使用主干集合向用户视图中添加电影,如下所示

class Movieseat.Collections.Movieseats extends Backbone.Collection

  url: '/api/movies'
  defaults: 
    title: "" 
通过我的索引视图

class Movieseat.Views.MovieseatsIndex extends Backbone.View

  template: JST['movieseats/index'] 

  initialize: -> 
    @collection.on('update', @render, this)
    @collection.on('add', @appendEntry, this)

  render: -> 
    $(@el).html(@template())
    @collection.each(@appendEntry)
    this

  events: -> 
    "click li": "addEntry" 

  addEntry: (e) -> 
    movie_title = $(e.target).text()
    @collection.create title: movie_title

  appendEntry: (entry) ->
    view = new Movieseat.Views.Entry(model: entry)
    $('#entries').append(view.render().el)
这是我的条目视图

    class Movieseat.Views.Entry extends Backbone.View

      template: JST['movieseats/entry']
      className: 'movie-frame'

      render: -> 
        $(@el).html(@template(entry: @model))
        this
这一切都很好。我的页面上有一些电影标题作为静态文本。当用户单击电影标题时,它将被添加到视图中。但我不明白的是,电影的标题保存在哪里?我如何使用Rails控制台找到它

我尝试在控制台中执行
电影。all
,该控制台显示了我使用表单向模型添加电影时制作的电影模型中的所有电影。它不显示静态标题的电影标题。但是如果remove
在用户模型中有很多电影,应用程序就会崩溃


那么用户、电影、Rails和主干网之间的联系是什么呢?

在现代Javascript中,服务器(Rails)和客户端(主干网)之间的所有通信通常都是通过AJAX进行的(尽管有时还使用表单提交)。具体来说,AJAX请求主要围绕两种方法展开:
fetch
save
(其他方法,如
remove
也可以触发AJAX)
fetch
从Rails获取数据并将其引入主干网,而save则相反,将数据从主干网引入Rails

为了使其与您的电影模型配合使用,您需要:

  • 服务器上的Rails端点(例如,
    example.com/api/movie
    ),希望为电影提供JSON并将其保存为Rails记录
  • 带有指向Rails端点的
    url
    属性的
    Backbone.Model
  • 如果您有这两个,并在电影
    主干上调用
    save
    。Model
    模型将以JSON形式将其
    属性发布到模型的URL,此时Rails端点可以接收该JSON并将其存储在数据库中

    类似地,当您在该电影模型上调用
    fetch
    时,主干将向同一URL发出AJAX请求,而不是POST,它将是GET请求。在本例中,Rails端点应该返回电影的JSON表示,然后主干将转换为model
    attributes

    希望有帮助


    另外,由于用户只是像电影一样的另一个模型,所以我所说的关于电影的一切都同样适用于用户。

    在现代Javascript中,服务器(Rails)和客户端(主干网)之间的所有通信都是通过AJAX进行的(尽管有时还使用表单提交)。具体来说,AJAX请求主要围绕两种方法展开:
    fetch
    save
    (其他方法,如
    remove
    也可以触发AJAX)
    fetch
    从Rails获取数据并将其引入主干网,而save则相反,将数据从主干网引入Rails

    为了使其与您的电影模型配合使用,您需要:

  • 服务器上的Rails端点(例如,
    example.com/api/movie
    ),希望为电影提供JSON并将其保存为Rails记录
  • 带有指向Rails端点的
    url
    属性的
    Backbone.Model
  • 如果您有这两个,并在电影
    主干上调用
    save
    。Model
    模型将以JSON形式将其
    属性发布到模型的URL,此时Rails端点可以接收该JSON并将其存储在数据库中

    类似地,当您在该电影模型上调用
    fetch
    时,主干将向同一URL发出AJAX请求,而不是POST,它将是GET请求。在本例中,Rails端点应该返回电影的JSON表示,然后主干将转换为model
    attributes

    希望有帮助

    另外,由于用户只是和电影一样的另一个模型,所以我所说的关于电影的一切都同样适用于用户