Rails从4.2.0升级到5.1.2会导致以下coffeescript代码中断

时间:2017-08-31 17:13:02

标签: ruby-on-rails ruby coffeescript haml

所以附加视图中显示的coffeescript代码在我的Rails 4.2.0视图中运行没有问题,但是在Rails 5.1.2升级中打破了显示的消息:我已经升级了下面显示的gem:

coffee-rails from 4.1.0 to 4.2.2
coffee-script-source from 1.9.0 to 1.12.2

haml_coffee_assets总是指向master分支,如下所示,所以没有更改:

gem 'haml_coffee_assets', git: "https://github.com/netzpirat/haml_coffee_assets"

在我开始做出疯狂的改变之前,我想看看是否有其他人遇到过类似的问题。我正在摆脱coffeescript,转而使用我新版Rails应用程序中的普通javascript,并且嵌入式javascript代码没有任何问题。但是,这是一个较旧的应用程序,没有大量使用,我想投入最少的时间来维护它。其中有太多的Coffeescript代码可供我轻松转换。如果有一个网站让我将coffeescript转换为Javascript而没有太多问题,那么我想。最好的解决方案就是继续保持我的目标。

coffeescript compile error

有没有人遇到这个问题?有什么想法吗?

以下是代码:

- if @well.has_sense_graph?
  #sensitivity.tab
    = render :partial => "shared_wells/show_sensitivity", :locals => {:sensitivity => sense_hash[:sensitivity], :offset => sense_hash[:offset] }
    %br
    #discount_chart

:coffeescript
  $ ->
    model = new Backbone.Model
      forecastTickInterval: #{graph_hash[:forecast_tick_interval]}
      typeWell: #{@well.to_json}
      x_labels: #{graph_hash[:price_array]}
      disc_rate_array: #{graph_hash[:disc_rate_array]}
      disc_pv10_array: #{graph_hash[:disc_pv10_array]}
      ngl_array: #{ngl_vol_array}
    view = new VGStream.Views.TypeWells.Show(
      model: model
    ).render()
    VGStream.App.router = new VGStream.Routers.Tabs()
    VGStream.App.currentView = view
    Backbone.history.start()
    _.defer ->
      $(document).scrollTop(0)

1 个答案:

答案 0 :(得分:0)

所以我以实际的方式解决了这个问题。鉴于我必须在我的应用程序中删除CoffeeScript代码并将其替换为等效的Javascript代码,我执行了以下操作:

我在haml页面中嵌入了CoffeeScript代码的所有页面,如我在上面提供的代码中所示,我将其替换为等效的Javascript代码,如下所示:

:javascript

   $(function() {
     ...
   });

请注意,我离开了纯粹的' coffeescript文件,即扩展名为“.coffee'存储在assets / javascript / ...'单独的文件夹,因为我更直接的目标是尽快完成Rails 5.1.2升级。

由于某些我不知道的原因(我也不知道),嵌入式coffeescript代码不再适用于我,就像在Rails 4.2.0版本中那样。但由于我不再关心CoffeeScript,这种混合解决方案对我来说是可以接受的。