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 之类的东西来帮助解决这个问题。
因为我想在咖啡文件中执行 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 之类的东西来帮助解决这个问题。