从rails 4.20升级到rails 5.1.2会破坏Angular集成

时间:2017-08-15 17:11:48

标签: ruby-on-rails angularjs haml ng-annotate

我正在将我的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。

还有其他人遇到过这个问题吗?有哪些选项需要调查?

1 个答案:

答案 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通信。