我正在将我的rails 4.2.0 app升级到5.1.2,这很好。我曾使用Angular 1.x有选择地增强我的rails应用页面。我的rails视图在HAML中。这是一个页面的片段,在4.2.0中加载正常,但在5.1.2中没有加载:
.well{"ng-app" => "billing", "ng-controller" => "BillableCtrl"}
= simple_form_for @billable do |f|
.row
.col-md-4
在此视图中加载角度精细。但是,当我尝试在Rails 5.1.2中加载它时,我在我的javascript控制台中获得以下堆栈跟踪。
Uncaught SyntaxError:意外的令牌& ?angular.self-26d045c60a96c782aa8ef9f5709b1b4fd1ec8578bc37ec2c6c2b9c4370f4bac0.js体= 1:64 未捕获的错误:[$ injector:modulerr]无法实例化模块 结算原因:错误:[$ injector:nomod]模块'结算'不是 可以!您要么错误拼写了模块名称,要么忘记加载它。 如果注册模块,请确保将依赖项指定为 第二个论点。
我在rails 5.1.2升级中使用ngannotate-rails版本1.2.2。 rails 4.2.0版本中使用的ngannotate-rails版本为0.15.4。
还有其他人遇到过这个问题吗?有哪些选项需要调查?
答案 0 :(得分:0)
事实证明,这不是一个角度问题,而是Rails到Javascript消息传递问题。在我的一个javascript函数中查看以下行代码:
$ scope.billable_item =#{@ billable.to_json};
根据我的经验,直到Rails 4.2.0,这是将Rails数据传递到javascript的标准方法。但是,由于某种原因,我还不了解,它已被打破。这导致Angular抛出非常令人困惑的消息。我一直在使用' Gon' gem将数据从Rails传递到Javascript一段时间后我切换到工作正常的。我现在将整个Rails切换为与Gon gem的Javascript通信。