Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/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 3 未捕获类型错误:无法调用方法';启动';主干.history.start()上未定义的_Ruby On Rails 3_Backbone.js - Fatal编程技术网

Ruby on rails 3 未捕获类型错误:无法调用方法';启动';主干.history.start()上未定义的

Ruby on rails 3 未捕获类型错误:无法调用方法';启动';主干.history.start()上未定义的,ruby-on-rails-3,backbone.js,Ruby On Rails 3,Backbone.js,我正在使用Rails。我刚刚安装了主干railsgem,并按照说明进行了操作 当我尝试执行主干.history.start()时,出现以下错误: Uncaught TypeError: Cannot call method 'start' of undefined 据我所知,Backbone.history.start()。但这似乎不是我的问题,因为我有多条路由,在这个CoffeeScript文件中定义: class Lunchhub.Routers.RestaurantLocationsRo

我正在使用Rails。我刚刚安装了
主干rails
gem,并按照说明进行了操作

当我尝试执行
主干.history.start()
时,出现以下错误:

Uncaught TypeError: Cannot call method 'start' of undefined
据我所知,
Backbone.history.start()。但这似乎不是我的问题,因为我有多条路由,在这个CoffeeScript文件中定义:

class Lunchhub.Routers.RestaurantLocationsRouter extends Backbone.Router
  initialize: (options) ->
    @restaurantLocations = new Lunchhub.Collections.RestaurantLocationsCollection()
    @restaurantLocations.reset options.restaurantLocations

  routes:
    "new"      : "newRestaurantLocation"
    "index"    : "index"
    ":id/edit" : "edit"
    ":id"      : "show"
    ".*"        : "index"
为什么我会犯这个错误

编辑:这是我的代码:

<div id="restaurant_locations"></div>

<script type="text/javascript">
  $(function() {
    window.router = new Lunchhub.Routers.RestaurantLocationsRouter({restaurantLocations: <%= @restaurant_locations.to_json.html_safe -%>});
    Backbone.history.start();
  });
</script>

$(函数(){
window.router=新的午餐中心.Routers.RestaurantLocationsRouter({restaurantLocations:});
Backbone.history.start();
});

在调用
主干网.history.start
之前,尝试使用新关键字创建路由器实例

编辑:Backbone.history必须
未定义
,正如其他人所说,这通常是因为在Backbone创建此对象之前至少有一条路由处于活动状态

Backbone.js创建Backbone.History的实例(大写“H”) 一旦安装了控制器,则称为Backbone.history(小写“h”) 已创建,其中至少指定了一条路由

我看到您正在创建一个新的路由器实例,但可能是一个坏的路由器实例仍然是问题所在,只是与其他问题中讨论的不同——在调用
主干.history.start()
之前检查
窗口的
类型。它能回报你所期望的吗


编辑:正如在下面的评论中确认的那样,
RestaurantLocationsRouter
在某种程度上是坏的。我们还没有弄清楚原因,但创建一个新路由器的工作原理与预期一致,表明您的路由器实例确实出现了问题。

在调用
主干网.history.start之前,尝试使用新关键字创建一个路由器实例

编辑:Backbone.history必须
未定义
,正如其他人所说,这通常是因为在Backbone创建此对象之前至少有一条路由处于活动状态

Backbone.js创建Backbone.History的实例(大写“H”) 一旦安装了控制器,则称为Backbone.history(小写“h”) 已创建,其中至少指定了一条路由

我看到您正在创建一个新的路由器实例,但可能是一个坏的路由器实例仍然是问题所在,只是与其他问题中讨论的不同——在调用
主干.history.start()
之前检查
窗口的
类型。它能回报你所期望的吗


编辑:正如在下面的评论中确认的那样,
RestaurantLocationsRouter
在某种程度上是坏的。我们还没有弄清楚原因,但创建一个新路由器的工作原理与预期一致,表明您的路由器实例确实出现了问题。

在调用
主干网.history.start()之前,您是否创建了任何路由的实例。
?比较,第二个有
新的R
,而第一个没有。我想是的。我进行了编辑以包含我的代码。在调用
主干.history.start()
之前,您是否创建了任何路由的实例?比较VS的行为,第二个路由有
新的R
,而第一个路由没有。我想我有。我编辑了我的代码。我想我已经这么做了,但我可能错了。我进行了编辑以包含我的代码。您可以检查window.router对象的
类型以查看它返回的内容吗?有可能它实际上不是
主干网路由器
的实例。它看起来像是
餐厅定位路由器
的实例。它的
typeof
object
。如果我们正在寻找
window.router
是否是有效路由器的证据,我可以在控制台中输入
window.router.routes
,它将返回我所期望的(多条路由)。谢谢。我的调试想法快用完了。顺便说一句,你在用什么浏览器?我想我已经在用了,但我可能错了。我进行了编辑以包含我的代码。您可以检查window.router对象的
类型以查看它返回的内容吗?有可能它实际上不是
主干网路由器
的实例。它看起来像是
餐厅定位路由器
的实例。它的
typeof
object
。如果我们正在寻找
window.router
是否是有效路由器的证据,我可以在控制台中输入
window.router.routes
,它将返回我所期望的(多条路由)。谢谢。我的调试想法快用完了。顺便说一句,你使用的是什么浏览器?