Rails HTML Table 使用 AJAX 更新 mongo 中的字段



我正在使用mongoid构建一个由mongodb支持的Rails应用程序。

这是一个单页应用程序,带有一个 HTML 表格,其中每一行的每个字段都需要在不刷新页面的情况下进行编辑。

这是您通常的 Rails 视图(就像许多 rails 转换视图一样),显示一个包含包含数据的行和列的表格。

例如。我正在展示汽车,并展示它们的品牌、型号和笔记

他们这样做的方式是将 mongo 文档的_id附加到每一列,并在 html id 中标记它的字段名称。然后我选取 $("#id") 的值,并通过 AJAX 将其发送到 rails 控制器,并相应地运行 @car.update_attributes 方法。

目前,我的一行看起来像这样。

    <tr>
       <td id=<%= car.id %>_make>
       <%= car.make %>
       </td>
       <td id=<%= car.id %>_model>
       <%= car.model %> 
       </td>
       <td id=<%= car.id %>_notes>
       <%= car.notes %>
       </td>
     </tr>
     // my function which is called onChange for every column
     function update_attributes(id){
        var id = id.split[0];
        var attribute = id.split[1];
        $.ajax("sending id and attribute to rails controller");
     }

是否有任何内置的 Rails 魔术,可以让我只更新模型中的字段而不刷新页面?

或。

有没有 Rails 插件?

还有一种叫做rest_in_place的宝石,它是专门为此而制造的。您需要执行很少的配置即可执行就地编辑。您的控制器只需要具有所有 restfull 方法。

对于您所描述的内容(以 ajax 为中心的单页应用程序),我强烈建议使用 backbone.js。您也可以通过其他更简单的 gem(甚至手动编写 jquery ajax)来实现这一点,但我发现您很快就会在以 ajax 为中心的应用程序中变得杂乱无章。 主干网最大的好处之一是.js它如何保持你的ajax代码井井有条。尝试使用骨干导轨宝石,它可以在出色的内置脚手架的帮助下让您在几分钟内启动并运行。

为了更直接地回答你的问题,ajax 并不是你正在寻找的轨道的"内置",但有一些宝石可以帮助你更轻松地做到这一点(例如 backbone-rails)。

最新更新