Javascript 主干不与rails控制器通信?

Javascript 主干不与rails控制器通信?,javascript,ruby,backbone.js,ruby-on-rails-4,Javascript,Ruby,Backbone.js,Ruby On Rails 4,我正在使用Rails 4.1开发一个简单的主干JS应用程序,在将数据从控制器传输到集合时遇到了一些问题 我已经为应用程序设置了模型、视图、集合和路由器,但是当索引视图呈现时,我没有得到任何返回。当我尝试在控制台中点击js应用程序的initialize时,出现以下错误: TypeError:无法读取未定义的属性“tasks” 它指的是“数据”,它从rails控制器传递到initialize函数中 经过一些调试后,我发现我的控制器在尝试调用js应用程序上的initialize时收到以下错误: NoM

我正在使用Rails 4.1开发一个简单的主干JS应用程序,在将数据从控制器传输到集合时遇到了一些问题

我已经为应用程序设置了模型、视图、集合和路由器,但是当索引视图呈现时,我没有得到任何返回。当我尝试在控制台中点击js应用程序的initialize时,出现以下错误:

TypeError:无法读取未定义的属性“tasks”

它指的是“数据”,它从rails控制器传递到initialize函数中

经过一些调试后,我发现我的控制器在尝试调用js应用程序上的
initialize
时收到以下错误:

NoMethodError: private method `initialize' called for TodoList:Module
我的设置如下:

控制器:

class TasksController < ApplicationController
  respond_to :json, :html

  def index
    @tasks = Task.all
    respond_with(@tasks)
  end
end
主干路由器:

TodoList.Routers.Tasks = Backbone.Router.extend({
  routes: {
    '': 'index'
  },

  index: function() {
    alert('I cannot get this text to render');
  }
});
主干模型:

var Task = Backbone.Model.extend({});
主干收集:

TodoList.Collections.Tasks = Backbone.Collection.extend({
  model: Task,
  url: '/tasks'
});
更新

tasks/index.html/erb,其中TodoList.initialize从以下位置调用:

<%= content_for :javascript do %>
    <%= javascript_tag do %>
        TodoList.initialize({ tasks: <%== @tasks.to_json %> });
    <% end %>
<% end %>

初始化({tasks:});

经过一番挖掘,我意识到我的
application.html.erb
布局文件中缺少引用我的javascript的以下行


在JavaScript中在哪里调用
TodoList.initialize
?这里有些东西很混乱。该
TypeError
是一个JavaScript错误,但
NoMethodError
是一个Ruby错误。您试图在Ruby中调用
TodoList.initialize
,但您想在javascript中说
TodoList.initialize(一些javascript数据)
。我从index.html.erb文件调用TodoList.initialize。。。我将在上面附加一个更新。我认为这是一个ruby错误,因为我使用pry在ruby端进行调试…也许这是一个危险的想法?
<%= content_for :javascript do %>
    <%= javascript_tag do %>
        TodoList.initialize({ tasks: <%== @tasks.to_json %> });
    <% end %>
<% end %>