CoffeeScript 内部的 RoR 调用 <%= raw Model.all.to_json %> 并非每次都有效

RoR call <%= raw Model.all.to_json %> inside of a CoffeeScript doesn't work everytime

因为我想在咖啡文件中执行 Rails 代码,所以我将我的脚本文件命名为 "picture.coffee.erb",它看起来像这样:

drawDots = (x) ->
  canvas = document.getElementById 'picture'
  context = canvas.getContext '2d'
  drawDot(context, i['dim_x'], i['dim_y']) for i in x[0]

$ ->
  drawDots [<%= raw Dot.all.to_json %>]

当我第一次执行这段代码时,一切都很好。但是当我做了一些更改,比如添加一些新的点时,我的视图没有 "refresh" 并且我仍然看到旧的数组,直到我要对我的咖啡文件进行一些更改。然后我可以看到我的观点发生了一些变化.. 但它有点不可预测。 我怎样才能让这段代码在每次网站刷新时都刷新?

我已经试过了 window.onload = -> 或 document.ready -> 代替 $ ->

我已经用 'gon' gem. The tutorial is here 做到了。

Ruby 代码仅在第一次请求时由服务器上的 erb 处理。一旦 HTML 被传递给浏览器(在第一次请求时),它就像 Dot.all 的输出被硬编码一样。您需要在客户端中执行一些操作来更新该数组以反映客户端的更改。

Gon 帮不上什么忙。您仍然需要更新客户端数据对象。您可以考虑 Ember 或 Angular 或 Backbone 之类的东西来帮助解决这个问题。