【问题标题】:Using ajax with Sinatra to update the table将 ajax 与 Sinatra 一起使用来更新表
【发布时间】:2013-01-09 21:51:26
【问题描述】:

我确实知道如何将 ajax 与 Sinatra 一起用于琐碎的操作,例如更新一个简单的文本框或类似的东西:我只需发送一个 ajax 请求并在 success 事件上替换我想要的内容。这对我来说很清楚。

但是当我有一个表要使用 ajax 更新时,我应该怎么做?在ajax#success 上再次“绘制”表格将非常困难。当然应该有更简单的方法来实现这一点。

它存在吗?

【问题讨论】:

    标签: ruby ajax sinatra rack


    【解决方案1】:

    不是最有效的方法,但您可以将表格的完整 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);
    });
    

    【讨论】:

    • 我想我必须通过从 ajax#success 调用“partial(table_content_partial”) 来呈现表格。我该怎么做?
    • 你使用jQuery还是痛苦的纯javascript?
    • 我可以使用任何东西,没关系。那么我是否从 Sinatra 方法返回“为您的表格完成的 HTML 部分”?
    • 给我一个你想要可视化的数据的最小样本,例如模型名称和一些基本的属性名来渲染,我会为你写一个小样本。
    • 这是商品的清单。商品有名称、价格、重量、折扣。
    猜你喜欢
    • 2014-11-15
    • 2015-04-14
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多