heroku未被引用的引用错误

时间:2016-01-02 22:51:53

标签: ruby-on-rails heroku

所以我开发了我的网络应用程序,准备推送,但是在heroku上测试已经导致了一些问题。到目前为止,这是最大的一个。

我在展示页面的顶部有这段代码

  var api = '<%= @event.link.split('/')[-1] %>';

但是,在heroku中我收到一个控制台错误,指出api是一个未被捕获的引用错误。见下文。

Uncaught ReferenceError: api is not defined

我必须更改生产环境vars才能进行javascript预编译。 (他们没有被发现,并且在我这样做之前发出了404错误。

任何想法/帮助都会很好,如何使它成为api可以在javascript文件中使用(它在本地工作正常)

萨姆

1 个答案:

答案 0 :(得分:0)

问题似乎是您为静态命令链(JS)调用动态值。

// @event won't be present unless there's a request
var api = '<%= @event.link.split('/')[-1] %>'; 

Javascript是静态的(尤其是在生产中运行之前预先编译的)。这意味着JS中的任何引用都必须来自加载到DOM的对象。

因为您正在调用@event,这是一个Ruby @instance_variable,我猜测您的JS根本无法读取它,特别是如果您正在进行预编译。

您需要移除对@event的动态引用:

var api = "test";

-

如果上述方法有效,您必须重构代码,以便可以通过HTML元素访问@event

 var api = $("#event").data("event-link");

 <div id="event" data-event-link="......">&nbsp;</div>