从 rails 4.20 升级到 rails 5.1.2 中断 Angular 集成

upgrading to rails 5.1.2 from rails 4.20 breaks Angular integration

我正在将我的 rails 4.2.0 应用程序升级到 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

在此视图中加载 angular 正常。但是,当我尝试在 Rails 5.1.2.

中加载它时,我在 javascript 控制台中得到以下堆栈跟踪

Uncaught SyntaxError: Unexpected token & angular.self-26d045c60a96c782aa8ef9f5709b1b4fd1ec8578bc37ec2c6c2b9c4370f4bac0.js?body=1:64 Uncaught Error: [$injector:modulerr] Failed to instantiate module billing due to: Error: [$injector:nomod] Module 'billing' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

我在 rails 5.1.2 升级中使用 ngannotate-rails 版本 1.2.2。 rails4.2.0版本中使用的ngannotate-rails版本为0.15.4.

还有其他人 运行 关注这个问题吗?有哪些调查选项?

事实证明这不是 angular 问题,而是 Rails 到 Javascript 消息传递问题。在我的 javascript 函数之一中查看以下行代码:

$scope.billable_item = #{@billable.to_json};

根据我的经验,直到 Rails 4.2.0,这是将 Rails 数据传递到 javascript 的标准方法。但是,由于某种我还不明白的原因,它坏了。这导致 Angular 抛出非常混乱的消息。我一直在使用 'Gon' gem 将数据从 Rails 传递到 Javascript 一段时间,然后我切换到工作正常的那个。我现在将把我的整个 Rails 到 Javascript 通信切换到 Gon gem。