Ruby on rails 3 未捕获类型错误:无法调用方法';启动';主干.history.start()上未定义的
我正在使用Rails。我刚刚安装了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
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
,它将返回我所期望的(多条路由)。谢谢。我的调试想法快用完了。顺便说一句,你使用的是什么浏览器?