0

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

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

这是您常用的 Rails 视图(就像 Rails casts 中的许多视图一样),显示包含数据的行和列的表。

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

我这样做的方法是将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 插件吗?

4

2 回答 2

0

对于您所描述的内容(以单页 ajax 为中心的应用程序),我强烈建议使用骨干网。您也可以通过其他更简单的 gem(甚至手动编写 jquery ajax)来完成此操作,但我发现您在以 ajax 为中心的应用程序中很快就会变得杂乱无章。Backbone.js 最大的优点之一是它使您的 ajax 代码井井有条。尝试使用backbone-rails gem,借助出色的内置脚手架,它可以让您在几分钟内启动并运行。

为了更直接地回答您的问题,在您正在寻找的意义上,ajax 并不是“内置”到 rails 的,但是有一些 gem 可以帮助您更轻松地做到这一点(例如骨干轨)。

于 2012-11-24T17:01:52.433 回答
0

还有专门为此目的制作的名为rest_in_place的 gem。您将需要做很少的配置来执行就地编辑。你的控制器只需要拥有所有的 restfull 方法。

于 2012-11-24T17:19:48.870 回答