我确实知道如何将 ajax 与 Sinatra 一起用于琐碎的操作,例如更新一个简单的文本框或类似的东西:我只需要发送一个 ajax 请求并替换我想要的success
事件内容。这对我来说很清楚。
但是,当我有一个要使用 ajax 更新的表时,我该怎么办?在 .上再次“绘制”表格将非常困难ajax#success
。当然应该有更简单的方法来实现这一点。
它存在吗?
这不是最有效的方法,但您可以将表格的完整 HTML 部分返回给 Ajax-Request,并使用您返回的结果更新页面上的 Div-Container。在大多数情况下,这是最简单的方法:只需交换 div 的内容。
示例代码
sinatra 主文件中的操作:
# some code
post "/path/to/your/action" do
# get the parameters you need and do the update operation, then:
@goods = Good.all # if you use activerecord, or use what you want to get the list
slim :goods_table # or haml or erb or ...
end
# some code
您的视图文件(例如,我将在这里使用 slim):
table
tr
th title
th price
th weight
th discount
- @goods.each do |good|
th
td = good.title
td = good.price
td = good.weight
td = good.discount
我假设你的表被放置在一个 id 为“goods-table”的 div 中。所以带有 jquery 的 JS 会是这样的:
$.post("path/to/your/action", {parameter1: x, paramater2: y}, function (data) {
$("#goods-table").html(data);
});