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

时间:2015-08-27 12:07:59

标签: ruby ajax sinatra dashing

我想在erb文件中动态获取我的变量(ruby数组)的值。我可以在erb页面中调用该值,但是当我的作业继续运行并且变量的值不断变化时,我希望它的更改能够反映在我的erb文件中。

1 个答案:

答案 0 :(得分:0)

我希望你到目前为止享受你的Dashing体验。

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

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

然后循环遍历数据并在窗口小部件中初始化它。

Batman.js提供了可以循环数据[1]的视图绑定:

<li data-foreach-item="items"><div class="my-awesome-widget></div></li>

您还可以在CoffeeScript onData方法中循环它:

onData: (data) ->
  $.forEach data, (widget) =>
    @makeMyWidget widget

如果您想根据数据隐藏窗口小部件,可以在onData中执行此操作:

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

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