Ruby 如何在Dashing框架中从erb文件进行ajax调用?

Ruby 如何在Dashing框架中从erb文件进行ajax调用?,ruby,ajax,sinatra,dashing,Ruby,Ajax,Sinatra,Dashing,我想在erb文件中动态获取变量(ruby数组)的值。我可以在erb页面中调用该值,但由于我的作业一直在运行,变量的值一直在更改,我希望它的更改反映在我的erb文件中。我希望您能享受到目前为止的冲刺体验 破折号的概念是,任何事件和大多数动态内容都将在客户端(浏览器)中处理/生成。后端知道如何获取数据,前端知道如何显示数据 您需要使客户端咖啡脚本反映发送到仪表板的更改。因此,Ruby作业应该发送一个小部件数据数组——每个元素代表一个小部件 然后在数据上循环并在小部件中初始化它 Batman.js提供

我想在erb文件中动态获取变量(ruby数组)的值。我可以在erb页面中调用该值,但由于我的作业一直在运行,变量的值一直在更改,我希望它的更改反映在我的erb文件中。

我希望您能享受到目前为止的冲刺体验

破折号的概念是,任何事件和大多数动态内容都将在客户端(浏览器)中处理/生成。后端知道如何获取数据,前端知道如何显示数据

您需要使客户端咖啡脚本反映发送到仪表板的更改。因此,Ruby作业应该发送一个小部件数据数组——每个元素代表一个小部件

然后在数据上循环并在小部件中初始化它

Batman.js提供了可以在数据上循环的视图绑定:

如果要基于数据隐藏小部件,可以在onData中执行此操作:

// Ruby Job
send_event('event', { data: the_data, hidden: true })

// Widget CoffeeScript
onData: (data) =>
  if(data.hidden)
    $(@node).hide();

例如,我有两个小部件,一个在线形图小部件中显示温度,另一个使用仪表小部件显示其他数据。下次作业运行时,我只会得到一个在线形图小部件中显示温度的小部件。我想隐藏另一个仪表部件。如何实现这一点?我不确定我是否清楚你在问什么,但我添加了一个示例,演示如何隐藏小部件。基本上,您在
send_event
中发送的数据需要包含一些关于要使用的布局的元数据(本例中的布局选项是,既显示又隐藏)。
onData: (data) ->
  $.forEach data, (widget) =>
    @makeMyWidget widget
// Ruby Job
send_event('event', { data: the_data, hidden: true })

// Widget CoffeeScript
onData: (data) =>
  if(data.hidden)
    $(@node).hide();