我是一个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”按钮,操作会正确更新数据库中的记录:当我按下“刷新”按钮时,我可以看到数据表已更新。
一切正常,但....当我按下“狗组”按钮而不必按“刷新”按钮时,数据表是否有更新方式?
我知道我错过了什么......
答案 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