如何在更新操作后刷新轨道上的数据表?

时间:2014-10-22 19:19:59

标签: ruby-on-rails datatables

我是一个Rails新手,我有一个完整的工作数据表(感谢railscasts #340)。

在我的数据表视图中,我设置了2个按钮:

<button id="Refresh" type="button">Refresh</button>
<td><%= button_to 'dogroup', dogroup_utyord_path(format: "json"), remote: true %></td>

<table id="utyords" class="display" data-source="<%= utyords_url(format: "json") %>" width="100%">
...
</table>

这是我的工作coffescript:

jQuery ->
  oUtyordTable = $('#utyords').dataTable
  sPaginationType: "full_numbers"
  bJQueryUI: true
  bProcessing: true
  bServerSide: true
  sAjaxSource: $('#utyords').data('source')

$("#Refresh").click ->
  oUtyordTable.fnDraw()

在我的控制器中:

def index
  @utyords = Utyord.all
  respond_to do |format|
    format.html 
    format.json { render json: UtyordsDatatable.new(view_context) }
  end
end

def dogroup
  ddett = Utyord.all
  ddett.update_all "grp = 1"
  respond_to do |format|
    format.html 
    format.json 
  end
end

我按下“dogroup”按钮,操作会正确更新数据库中的记录:当我按下“刷新”按钮时,我可以看到数据表已更新。

一切正常,但....当我按下“狗组”按钮而不必按“刷新”按钮时,数据表是否有更新方式?

我知道我错过了什么......

1 个答案:

答案 0 :(得分:0)

这可以简单吗?

$('input[value="dogroup"]').mouseup ->
    oUtyordTable.fnDraw()

试一试...... Mouseup因为我们希望它在点击后运行。

如果没有,则在表单中添加标识符:

<%= button_to 'dogroup', dogroup_utyord_path(format: "json"), 
                         remote: true, form_class: "dogroup_form" %>

然后提交表单,然后运行脚本:

$(".dogroup_form").submit(e)->
     e.preventDefault()         #to stop the form
     $(this).submit()           #to manually submit it and
     oUtyordTable.fnDraw()      #to run your function

更新:来自this帖子:要使用未经您自己的代码处理的表单的ajax请求中的响应,您可以将事件绑定到表单(在javascript,而不是coffeescript):

放弃我提议的$(".dogroup_form").submit(e)->功能并添加:

$(".dogroup_form").bind('ajax:complete', function() {
    oUtyordTable.fnDraw();
});

online开始,这可能是CoffeeScript等同于上述内容:

$(".dogroup_form").bind "ajax:complete", ->
    oUtyordTable.fnDraw()
    return